<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-06-14T23:37:41.562776" rpa="false" schemaversion="5">
<suite id="s1" name="netconf-gate-callhome.txt" source="/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/suites/netconf/callhome">
<suite id="s1-s1" name="Callhome" source="/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/suites/netconf/callhome/callhome.robot">
<kw name="Suite Setup" owner="NetconfCallHome" type="SETUP">
<kw name="Install Docker Compose on tools system" owner="NetconfCallHome">
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-14T23:37:42.076145" level="INFO">${tools_connection} = 1</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-06-14T23:37:42.075629" elapsed="0.000555"/>
</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-06-14T23:37:42.078340" level="INFO">Length is 0.</msg>
<msg time="2026-06-14T23:37:42.078434" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-14T23:37:42.077903" elapsed="0.000561"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-14T23:37:42.078612" elapsed="0.000420"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-14T23:37:42.080061" level="INFO">Logging into '10.30.171.162:22' as 'jenkins'.</msg>
<msg time="2026-06-14T23:37:42.751089" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

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

 System information as of Sun Jun 14 23:37:42 UTC 2026

  System load:  0.04               Processes:             103
  Usage of /:   20.6% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.162
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


[?2004h[jenkins@releng-00473-44-1-docker-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-06-14T23:37:42.079536" elapsed="0.671742"/>
</kw>
<msg time="2026-06-14T23:37:42.751399" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-14T23:37:42.079191" elapsed="0.672331"/>
</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-06-14T23:37:42.077416" elapsed="0.674251"/>
</kw>
<msg time="2026-06-14T23:37:42.751725" 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-06-14T23:37:42.076941" elapsed="0.674859"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-06-14T23:37:42.076372" elapsed="0.675533"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-06-14T23:37:42.751978" elapsed="0.000074"/>
</return>
<msg time="2026-06-14T23:37:42.752263" level="INFO">${netopeer_conn_id} = 1</msg>
<var>${netopeer_conn_id}</var>
<doc>Open a connection to the tools system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-06-14T23:37:42.075178" elapsed="0.677114"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-14T23:37:42.753077" level="INFO">${netopeer_conn_id} = 1</msg>
<arg>${netopeer_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-14T23:37:42.752536" elapsed="0.000588"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-14T23:37:42.757526" level="INFO">sudo curl -L "https://github.com/docker/compose/releases/download/1.11.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose</msg>
<arg>sudo curl -L "https://github.com/docker/compose/releases/download/1.11.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-06-14T23:37:42.753267" elapsed="0.004403"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-06-14T23:37:43.279125" level="INFO">[?2004l  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 8053k  100 8053k    0     0  15.9M      0 --:--:-- --:--:-- --:--:-- 15.9M
[?2004h[jenkins@releng-00473-44-1-docker-0 ~]&gt;</msg>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-06-14T23:37:42.760304" elapsed="0.518927"/>
</kw>
<msg time="2026-06-14T23:37:43.279369" level="INFO">${output} = [?2004l  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     ...</msg>
<var>${output}</var>
<arg>30s</arg>
<arg>2s</arg>
<arg>SSHLibrary.Read_Until_Prompt</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-06-14T23:37:42.759190" elapsed="0.520209"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:43.279856" level="INFO">Executing command 'sudo chmod +x /usr/local/bin/docker-compose'.</msg>
<msg time="2026-06-14T23:37:43.302871" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:37:43.303156" level="INFO">${stdout} = </msg>
<msg time="2026-06-14T23:37:43.303257" level="INFO">${stderr} = </msg>
<msg time="2026-06-14T23:37:43.303353" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>sudo chmod +x /usr/local/bin/docker-compose</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:43.279596" elapsed="0.023808"/>
</kw>
<doc>Install docker-compose on tools system.</doc>
<status status="PASS" start="2026-06-14T23:37:42.071505" elapsed="1.232086"/>
</kw>
<kw name="Pull Netopeer2 Docker Image" owner="NetconfCallHome">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:43.305170" level="INFO">Executing command 'docker pull sysrepo/sysrepo-netopeer2:latest'.</msg>
<msg time="2026-06-14T23:37:51.294878" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:37:51.295428" level="INFO">${stdout} = latest: Pulling from sysrepo/sysrepo-netopeer2
399fb1102f3f: Pulling fs layer
6154df8ff988: Pulling fs layer
9b0152ba3415: Pulling fs layer
fee5db0ff82f: Pulling fs layer
456e970a28f8: Pulling fs laye...</msg>
<msg time="2026-06-14T23:37:51.295539" level="INFO">${stderr} = </msg>
<msg time="2026-06-14T23:37:51.295636" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker pull sysrepo/sysrepo-netopeer2:latest</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:43.304751" elapsed="7.990947"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:51.296985" level="INFO">Executing command 'docker images'.</msg>
<msg time="2026-06-14T23:37:51.408836" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:37:51.409187" level="INFO">${stdout} = IMAGE                              ID             DISK USAGE   CONTENT SIZE   EXTRA
sysrepo/sysrepo-netopeer2:latest   36cc1d841c97        914MB          232MB        </msg>
<msg time="2026-06-14T23:37:51.409290" level="INFO">${stderr} = WARNING: This output is designed for human readability. For machine-readable output, please use --format.</msg>
<msg time="2026-06-14T23:37:51.409382" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker images</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:51.296343" elapsed="0.113092"/>
</kw>
<doc>Pulls the netopeer image from the docker repository.</doc>
<status status="PASS" start="2026-06-14T23:37:43.304231" elapsed="8.105473"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-06-14T23:37:51.457251" level="INFO">[chan 4] Opened sftp connection (server version 3)</msg>
<msg time="2026-06-14T23:37:51.469938" level="INFO">'/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/docker-compose.yaml' -&gt; '/home/jenkins//docker-compose.yaml'</msg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/docker-compose.yaml</arg>
<arg>.</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-06-14T23:37:51.410143" elapsed="0.059995"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-06-14T23:37:51.479806" level="INFO">'/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/init_configuration.sh' -&gt; '/home/jenkins//init_configuration.sh'</msg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/init_configuration.sh</arg>
<arg>.</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-06-14T23:37:51.470637" elapsed="0.009260"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:51.480401" level="INFO">Executing command 'sed -i -e 's/ODL_SYSTEM_IP/10.30.171.92/g' docker-compose.yaml'.</msg>
<msg time="2026-06-14T23:37:51.493500" level="INFO">Command exited with return code 0.</msg>
<arg>sed -i -e 's/ODL_SYSTEM_IP/${ODL_SYSTEM_IP}/g' docker-compose.yaml</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:51.480129" elapsed="0.013511"/>
</kw>
<kw name="Set_Variable_If_At_Least_Sulfur" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-06-14T23:37:51.514096" elapsed="0.000522"/>
</kw>
<msg time="2026-06-14T23:37:51.514684" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-14T23:37:51.513730" elapsed="0.001062"/>
</kw>
<arg>sulfur</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to vanadium and return 4334 if vanadium is at least ${lower_bound},
return 6666 otherwise.</doc>
<status status="PASS" start="2026-06-14T23:37:51.513391" elapsed="0.001491"/>
</kw>
<msg time="2026-06-14T23:37:51.514927" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>sulfur</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-14T23:37:51.505208" elapsed="0.009763"/>
</kw>
<msg time="2026-06-14T23:37:51.515093" level="INFO">${netconf_cl_ssh_port} = 4334</msg>
<var>${netconf_cl_ssh_port}</var>
<arg>4334</arg>
<arg>6666</arg>
<doc>Compare sulfur to vanadium and return ${value_if_true} if vanadium is at least sulfur, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-06-14T23:37:51.504720" elapsed="0.010398"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:51.515401" level="INFO">Executing command 'sed -i -e 's/NETCONF_CH_SSH/4334/g' docker-compose.yaml'.</msg>
<msg time="2026-06-14T23:37:51.543914" level="INFO">Command exited with return code 0.</msg>
<arg>sed -i -e 's/NETCONF_CH_SSH/${netconf_cl_ssh_port}/g' docker-compose.yaml</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:51.515259" elapsed="0.028793"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:51.544605" level="INFO">Executing command 'sed -i -e 's/NETCONF_CH_TLS/4335/g' docker-compose.yaml'.</msg>
<msg time="2026-06-14T23:37:51.595606" level="INFO">Command exited with return code 0.</msg>
<arg>sed -i -e 's/NETCONF_CH_TLS/4335/g' docker-compose.yaml</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:51.544381" elapsed="0.051443"/>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-06-14T23:37:51.620041" elapsed="0.000480"/>
</kw>
<msg time="2026-06-14T23:37:51.620584" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-14T23:37:51.619680" elapsed="0.000975"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to vanadium and return "connection-status":"connected" if vanadium is at least ${lower_bound},
return "netconf-node-topology:connection-status":"connected" otherwise.</doc>
<status status="PASS" start="2026-06-14T23:37:51.619361" elapsed="0.001532"/>
</kw>
<msg time="2026-06-14T23:37:51.620942" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-14T23:37:51.612276" elapsed="0.008713"/>
</kw>
<msg time="2026-06-14T23:37:51.621112" level="INFO">${substring1} = "connection-status":"connected"</msg>
<var>${substring1}</var>
<arg>"connection-status":"connected"</arg>
<arg>"netconf-node-topology:connection-status":"connected"</arg>
<doc>Compare scandium to vanadium and return ${value_if_true} if vanadium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-06-14T23:37:51.611935" elapsed="0.009201"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T23:37:51.621589" level="INFO">${substring2} = "node-id":"netopeer2"</msg>
<var>${substring2}</var>
<arg>"node-id":"netopeer2"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-14T23:37:51.621321" elapsed="0.000294"/>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-06-14T23:37:51.636245" elapsed="0.000419"/>
</kw>
<msg time="2026-06-14T23:37:51.636715" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-14T23:37:51.635911" elapsed="0.000873"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to vanadium and return "available-capabilities" if vanadium is at least ${lower_bound},
return "netconf-node-topology:available-capabilities" otherwise.</doc>
<status status="PASS" start="2026-06-14T23:37:51.635581" elapsed="0.001291"/>
</kw>
<msg time="2026-06-14T23:37:51.636915" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-14T23:37:51.628588" elapsed="0.008372"/>
</kw>
<msg time="2026-06-14T23:37:51.637082" level="INFO">${substring3} = "available-capabilities"</msg>
<var>${substring3}</var>
<arg>"available-capabilities"</arg>
<arg>"netconf-node-topology:available-capabilities"</arg>
<doc>Compare scandium to vanadium and return ${value_if_true} if vanadium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-06-14T23:37:51.628341" elapsed="0.008771"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-06-14T23:37:51.637653" level="INFO">${netconf_mount_expected_values} = ['"connection-status":"connected"', '"node-id":"netopeer2"', '"available-capabilities"']</msg>
<var>${netconf_mount_expected_values}</var>
<arg>${substring1}</arg>
<arg>${substring2}</arg>
<arg>${substring3}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-06-14T23:37:51.637284" elapsed="0.000396"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-14T23:37:51.638276" level="INFO">${netconf_mount_expected_values} = ['"connection-status":"connected"', '"node-id":"netopeer2"', '"available-capabilities"']</msg>
<arg>${netconf_mount_expected_values}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-14T23:37:51.637901" elapsed="0.000418"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-14T23:37:51.641705" level="INFO">${CREATE_GLOBAL_CREDENTIALS_REQ} = /w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/create_global_credentials.json</msg>
<arg>${CREATE_GLOBAL_CREDENTIALS_REQ}</arg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/create_global_credentials.json</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-14T23:37:51.638469" elapsed="0.003283"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-14T23:37:51.645370" level="INFO">${CREATE_SSH_DEVICE_REQ} = /w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/create_ssh_device.json</msg>
<arg>${CREATE_SSH_DEVICE_REQ}</arg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/create_ssh_device.json</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-14T23:37:51.641929" elapsed="0.003488"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-14T23:37:51.648523" level="INFO">${CREATE_SSH_DEVICE_REQ_HOST_KEY_ONLY} = /w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/create_device_hostkey_only.json</msg>
<arg>${CREATE_SSH_DEVICE_REQ_HOST_KEY_ONLY}</arg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/create_device_hostkey_only.json</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-14T23:37:51.645572" elapsed="0.002997"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-14T23:37:51.652328" level="INFO">${CREATE_TLS_DEVICE_REQ} = /w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/create_tls_device.json</msg>
<arg>${CREATE_TLS_DEVICE_REQ}</arg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/create_tls_device.json</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-14T23:37:51.648724" elapsed="0.003649"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-14T23:37:51.655904" level="INFO">${ADD_KEYSTORE_ENTRY_REQ} = /w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/add_keystore_entry.json</msg>
<arg>${ADD_KEYSTORE_ENTRY_REQ}</arg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/add_keystore_entry.json</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-14T23:37:51.652527" elapsed="0.003423"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-14T23:37:51.659791" level="INFO">${ADD_PRIVATE_KEY_REQ} = /w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/add_private_key.json</msg>
<arg>${ADD_PRIVATE_KEY_REQ}</arg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/add_private_key.json</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-14T23:37:51.656103" elapsed="0.003735"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-14T23:37:51.663392" level="INFO">${ADD_TRUSTED_CERTIFICATE} = /w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/add_trusted_certificate.json</msg>
<arg>${ADD_TRUSTED_CERTIFICATE}</arg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/add_trusted_certificate.json</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-14T23:37:51.660027" elapsed="0.003412"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:51.663686" level="INFO">Executing command 'ssh-keygen -q -t rsa -b 2048 -N '' -m pem -f ./incorrect_ssh_host_rsa_key'.</msg>
<msg time="2026-06-14T23:37:51.828224" level="INFO">Command exited with return code 0.</msg>
<arg>ssh-keygen -q -t rsa -b 2048 -N '' -m pem -f ./incorrect_ssh_host_rsa_key</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:51.663579" elapsed="0.164855"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:51.829239" level="INFO">Executing command 'awk '{print $2}' incorrect_ssh_host_rsa_key.pub'.</msg>
<msg time="2026-06-14T23:37:51.876066" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:37:51.876382" level="INFO">${incorrect_public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDwQzhtlZv0kSQqYqc9WTafNFp4opVEpgSwR+Yh826lrmsTDyaYe2tOg0q7ZQPL2fcZHq4t0UX6JouLSbEeModVUFojMpjhmFkghBVkGLVERYdGKjV7KFbZ4YbmZ/5mAenLHbjrUPytxl79mqRzkiVioXoFz9ABPMRp3lmwLzFD...</msg>
<var>${incorrect_public_key}</var>
<arg>awk '{print $2}' incorrect_ssh_host_rsa_key.pub</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:51.828940" elapsed="0.047511"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-14T23:37:51.886196" level="INFO">${INCORRECT_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDwQzhtlZv0kSQqYqc9WTafNFp4opVEpgSwR+Yh826lrmsTDyaYe2tOg0q7ZQPL2fcZHq4t0UX6JouLSbEeModVUFojMpjhmFkghBVkGLVERYdGKjV7KFbZ4YbmZ/5mAenLHbjrUPytxl79mqRzkiVioXoFz9ABPMRp3lmwLzFD...</msg>
<arg>${INCORRECT_PUB_KEY}</arg>
<arg>${incorrect_public_key}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-14T23:37:51.877012" elapsed="0.009291"/>
</kw>
<doc>Get the suite ready for callhome test cases.</doc>
<status status="PASS" start="2026-06-14T23:37:42.071197" elapsed="9.815264"/>
</kw>
<test id="s1-s1-t1" name="CallHome over SSH with correct device credentials" line="17">
<kw name="Test Setup" owner="NetconfCallHome" type="SETUP">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:37:51.888858" level="INFO">Creating Session using : alias=session, url=http://10.30.171.92:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7aecf3045f10&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-06-14T23:37:51.888515" elapsed="0.000647"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:51.889445" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-06-14T23:37:51.928008" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ./configuration-files &amp;&amp; mkdir configuration-files</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:51.889317" elapsed="0.038954"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:51.928914" level="INFO">Executing command 'ssh-keygen -q -t rsa -b 2048 -N '' -m pem -f ./configuration-files/ssh_host_rsa_key'.</msg>
<msg time="2026-06-14T23:37:52.223399" level="INFO">Command exited with return code 0.</msg>
<arg>ssh-keygen -q -t rsa -b 2048 -N '' -m pem -f ./configuration-files/ssh_host_rsa_key</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:51.928624" elapsed="0.295186"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:52.224937" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-06-14T23:37:52.271915" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:37:52.272211" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDWKjYJCkYzTsXVh/9lrXI0QsLUxiSN8Q9CvOPAO5gcyQfXX5MPVeBnyNNDcR2lu71kVuDBahKd4BPTfwIevJCjVwrp55lejsrzdtjv3Md+keFiYrfe5wsTiDAHgikmW3rWZB3A4IPhXATTF8btnM29C3olwUDWp+R5afTXOWg1...</msg>
<var>${public_key}</var>
<arg>cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}'</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:52.224442" elapsed="0.047829"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-06-14T23:37:52.281848" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDWKjYJCkYzTsXVh/9lrXI0QsLUxiSN8Q9CvOPAO5gcyQfXX5MPVeBnyNNDcR2lu71kVuDBahKd4BPTfwIevJCjVwrp55lejsrzdtjv3Md+keFiYrfe5wsTiDAHgikmW3rWZB3A4IPhXATTF8btnM29C3olwUDWp+R5afTXOWg1...</msg>
<arg>${NETOPEER_PUB_KEY}</arg>
<arg>${public_key}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-06-14T23:37:52.272734" elapsed="0.009186"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-06-14T23:37:51.888193" elapsed="0.393842"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-06-14T23:37:52.323046" level="INFO">'/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-netconf-server.xml' -&gt; '/home/jenkins/configuration-files/ietf-netconf-server.xml'</msg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-netconf-server.xml</arg>
<arg>configuration-files/ietf-netconf-server.xml</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-06-14T23:37:52.282829" elapsed="0.040311"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-06-14T23:37:52.331166" level="INFO">'/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-keystore.xml' -&gt; '/home/jenkins/configuration-files/ietf-keystore.xml'</msg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-keystore.xml</arg>
<arg>configuration-files/ietf-keystore.xml</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-06-14T23:37:52.323357" elapsed="0.007901"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-06-14T23:37:52.282372" elapsed="0.048981"/>
</kw>
<kw name="Register SSH call-home device in ODL controller" owner="NetconfCallHome">
<if>
<branch type="IF" condition="'${username}' == '${EMPTY}' or '${password}' == '${EMPTY}'">
<kw name="Get create device request without credentials template" owner="NetconfCallHome">
<status status="NOT RUN" start="2026-06-14T23:37:52.337160" elapsed="0.000132"/>
</kw>
<status status="NOT RUN" start="2026-06-14T23:37:52.332367" elapsed="0.004967"/>
</branch>
<branch type="ELSE">
<kw name="Get create device request template" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-06-14T23:37:52.338225" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/variables/netconf/callhome/json/create_ssh_device.json"&gt;/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/variables/netconf/callhome/json/create_ssh_device.json&lt;/a&gt;'.</msg>
<msg time="2026-06-14T23:37:52.338450" level="INFO">${template} = {
    "device": {
        "unique-id": "{device_name}",
        "ssh-client-params": {
          "credentials": {
              "username": "{username}",
              "passwords": [ "{password}" ]
  ...</msg>
<var>${template}</var>
<arg>${CREATE_SSH_DEVICE_REQ}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-06-14T23:37:52.337995" elapsed="0.000492"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-06-14T23:37:52.339206" level="INFO">${template} = {
    "device": {
        "unique-id": "{device_name}",
        "ssh-client-params": {
          "credentials": {
              "username": "{username}",
              "passwords": [ "{password}" ]
  ...</msg>
<arg>${template}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-06-14T23:37:52.338708" elapsed="0.000559"/>
</kw>
<status status="PASS" start="2026-06-14T23:37:52.337591" elapsed="0.001753"/>
</kw>
<status status="PASS" start="2026-06-14T23:37:52.337384" elapsed="0.001993"/>
</branch>
<status status="PASS" start="2026-06-14T23:37:52.332302" elapsed="0.007109"/>
</if>
<kw name="Replace String" owner="String">
<msg time="2026-06-14T23:37:52.340018" level="INFO">${body} = {
    "device": {
        "unique-id": "netopeer2",
        "ssh-client-params": {
          "credentials": {
              "username": "{username}",
              "passwords": [ "{password}" ]
      ...</msg>
<var>${body}</var>
<arg>${template}</arg>
<arg>{device_name}</arg>
<arg>${device_name}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-06-14T23:37:52.339609" elapsed="0.000447"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-06-14T23:37:52.340670" level="INFO">${body} = {
    "device": {
        "unique-id": "netopeer2",
        "ssh-client-params": {
          "credentials": {
              "username": "root",
              "passwords": [ "{password}" ]
          },...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>{username}</arg>
<arg>${username}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-06-14T23:37:52.340260" elapsed="0.000454"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-06-14T23:37:52.341271" level="INFO">${body} = {
    "device": {
        "unique-id": "netopeer2",
        "ssh-client-params": {
          "credentials": {
              "username": "root",
              "passwords": [ "root" ]
          },
     ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>{password}</arg>
<arg>${password}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-06-14T23:37:52.340945" elapsed="0.000363"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-06-14T23:37:52.341833" level="INFO">${body} = {
    "device": {
        "unique-id": "netopeer2",
        "ssh-client-params": {
          "credentials": {
              "username": "root",
              "passwords": [ "root" ]
          },
     ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>{hostkey}</arg>
<arg>${hostkey}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-06-14T23:37:52.341507" elapsed="0.000354"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:37:52.348057" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:52.550049" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:52.953076" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:52.955308" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${whitelist}</arg>
<arg>data=${body}</arg>
<arg>headers=${HEADERS}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-06-14T23:37:52.342001" elapsed="0.624356">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-06-14T23:37:52.966987" elapsed="0.000063"/>
</kw>
<arg>netopeer2</arg>
<arg>${NETOPEER_PUB_KEY}</arg>
<arg>root</arg>
<arg>root</arg>
<doc>Registration call-home device with SSH transport using latest models</doc>
<status status="FAIL" start="2026-06-14T23:37:52.331800" elapsed="0.635503">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker-compose up -d</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-06-14T23:37:52.967582" elapsed="0.000031"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>90s</arg>
<arg>2s</arg>
<arg>NetconfCallHome.Check Device Status</arg>
<arg>CONNECTED</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-06-14T23:37:52.967901" elapsed="0.000032"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>30s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${mount_point_url}</arg>
<arg>${netconf_mount_expected_values}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-06-14T23:37:52.968145" elapsed="0.000029"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:52.970090" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-06-14T23:37:53.237087" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-06-14T23:37:53.237674" level="INFO">${stdout} = </msg>
<msg time="2026-06-14T23:37:53.237831" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-06-14T23:37:53.237931" level="INFO">${rc} = 1</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker-compose logs</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:52.969639" elapsed="0.268349"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T23:37:53.239640" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T23:37:53.238655" elapsed="0.001090"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:53.240619" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-06-14T23:37:53.529507" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-06-14T23:37:53.529856" level="INFO">${stdout} = </msg>
<msg time="2026-06-14T23:37:53.529962" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-06-14T23:37:53.530053" level="INFO">${rc} = 1</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker-compose down</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:53.240172" elapsed="0.289930"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:53.543361" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-06-14T23:37:53.590594" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:37:53.591118" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-06-14T23:37:53.591224" level="INFO">${stderr} = </msg>
<msg time="2026-06-14T23:37:53.591315" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker ps -a</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:53.542924" elapsed="0.048444"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:53.592292" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-06-14T23:37:53.640217" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ./configuration-files</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:53.591951" elapsed="0.048405"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:37:53.649743" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:53.852695" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:54.255652" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:54.261356" level="INFO">${resp} = None</msg>
<msg time="2026-06-14T23:37:54.261489" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${whitelist}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-06-14T23:37:53.640690" elapsed="0.629670">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:37:54.278879" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:37:54.480716" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:37:54.883592" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:37:54.886302" level="INFO">${resp} = None</msg>
<msg time="2026-06-14T23:37:54.886432" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${netconf_keystore_data_url}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-06-14T23:37:54.272317" elapsed="0.619255">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Tears down the docker running netopeer and deletes entry from the whitelist.</doc>
<status status="FAIL" start="2026-06-14T23:37:52.968947" elapsed="1.923046">Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Correct credentials should result to successful mount. CONNECTED should be the device status.</doc>
<status status="FAIL" start="2026-06-14T23:37:51.886698" elapsed="3.005613">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s1-t2" name="CallHome over SSH with incorrect device credentials" line="34">
<kw name="Test Setup" owner="NetconfCallHome" type="SETUP">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:37:54.894334" level="INFO">Creating Session using : alias=session, url=http://10.30.171.92:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7aecf2c970d0&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-06-14T23:37:54.894038" elapsed="0.000474"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:54.894791" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-06-14T23:37:54.909047" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ./configuration-files &amp;&amp; mkdir configuration-files</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:54.894658" elapsed="0.014520"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:54.909723" level="INFO">Executing command 'ssh-keygen -q -t rsa -b 2048 -N '' -m pem -f ./configuration-files/ssh_host_rsa_key'.</msg>
<msg time="2026-06-14T23:37:55.142437" level="INFO">Command exited with return code 0.</msg>
<arg>ssh-keygen -q -t rsa -b 2048 -N '' -m pem -f ./configuration-files/ssh_host_rsa_key</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:54.909502" elapsed="0.233083"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:55.143224" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-06-14T23:37:55.191842" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:37:55.192085" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDJFN0S3WwO7yxyIDU7xZ428QLnif1sUx7+W9eV8NSnBoBtq5o/wTsS2D+tNPxSSGxbKK2uTynctyFVsb8KdagvYDMllSlAQAY//qAx2W/Xmz9Ic1VJ++hU7bphyMiCBRG5xpFKQKe/DoAHlSy3tsIBRVtsrFZIYF1527cuXPcy...</msg>
<var>${public_key}</var>
<arg>cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}'</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:55.142977" elapsed="0.049168"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-06-14T23:37:55.199980" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDJFN0S3WwO7yxyIDU7xZ428QLnif1sUx7+W9eV8NSnBoBtq5o/wTsS2D+tNPxSSGxbKK2uTynctyFVsb8KdagvYDMllSlAQAY//qAx2W/Xmz9Ic1VJ++hU7bphyMiCBRG5xpFKQKe/DoAHlSy3tsIBRVtsrFZIYF1527cuXPcy...</msg>
<arg>${NETOPEER_PUB_KEY}</arg>
<arg>${public_key}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-06-14T23:37:55.192517" elapsed="0.007532"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-06-14T23:37:54.893710" elapsed="0.306428"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-06-14T23:37:55.239128" level="INFO">'/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-netconf-server.xml' -&gt; '/home/jenkins/configuration-files/ietf-netconf-server.xml'</msg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-netconf-server.xml</arg>
<arg>configuration-files/ietf-netconf-server.xml</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-06-14T23:37:55.200793" elapsed="0.038422"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-06-14T23:37:55.251102" level="INFO">'/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-keystore.xml' -&gt; '/home/jenkins/configuration-files/ietf-keystore.xml'</msg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-keystore.xml</arg>
<arg>configuration-files/ietf-keystore.xml</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-06-14T23:37:55.239414" elapsed="0.011777"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-06-14T23:37:55.200386" elapsed="0.050892"/>
</kw>
<kw name="Register SSH call-home device in ODL controller" owner="NetconfCallHome">
<if>
<branch type="IF" condition="'${username}' == '${EMPTY}' or '${password}' == '${EMPTY}'">
<kw name="Get create device request without credentials template" owner="NetconfCallHome">
<status status="NOT RUN" start="2026-06-14T23:37:55.256928" elapsed="0.000072"/>
</kw>
<status status="NOT RUN" start="2026-06-14T23:37:55.252164" elapsed="0.004885"/>
</branch>
<branch type="ELSE">
<kw name="Get create device request template" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-06-14T23:37:55.257926" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/variables/netconf/callhome/json/create_ssh_device.json"&gt;/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/variables/netconf/callhome/json/create_ssh_device.json&lt;/a&gt;'.</msg>
<msg time="2026-06-14T23:37:55.258117" level="INFO">${template} = {
    "device": {
        "unique-id": "{device_name}",
        "ssh-client-params": {
          "credentials": {
              "username": "{username}",
              "passwords": [ "{password}" ]
  ...</msg>
<var>${template}</var>
<arg>${CREATE_SSH_DEVICE_REQ}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-06-14T23:37:55.257673" elapsed="0.000481"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-06-14T23:37:55.258831" level="INFO">${template} = {
    "device": {
        "unique-id": "{device_name}",
        "ssh-client-params": {
          "credentials": {
              "username": "{username}",
              "passwords": [ "{password}" ]
  ...</msg>
<arg>${template}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-06-14T23:37:55.258361" elapsed="0.000535"/>
</kw>
<status status="PASS" start="2026-06-14T23:37:55.257302" elapsed="0.001741"/>
</kw>
<status status="PASS" start="2026-06-14T23:37:55.257096" elapsed="0.001983"/>
</branch>
<status status="PASS" start="2026-06-14T23:37:55.252127" elapsed="0.006985"/>
</if>
<kw name="Replace String" owner="String">
<msg time="2026-06-14T23:37:55.259648" level="INFO">${body} = {
    "device": {
        "unique-id": "netopeer2",
        "ssh-client-params": {
          "credentials": {
              "username": "{username}",
              "passwords": [ "{password}" ]
      ...</msg>
<var>${body}</var>
<arg>${template}</arg>
<arg>{device_name}</arg>
<arg>${device_name}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-06-14T23:37:55.259301" elapsed="0.000384"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-06-14T23:37:55.260226" level="INFO">${body} = {
    "device": {
        "unique-id": "netopeer2",
        "ssh-client-params": {
          "credentials": {
              "username": "root",
              "passwords": [ "{password}" ]
          },...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>{username}</arg>
<arg>${username}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-06-14T23:37:55.259907" elapsed="0.000356"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-06-14T23:37:55.260798" level="INFO">${body} = {
    "device": {
        "unique-id": "netopeer2",
        "ssh-client-params": {
          "credentials": {
              "username": "root",
              "passwords": [ "incorrect" ]
          },
...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>{password}</arg>
<arg>${password}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-06-14T23:37:55.260459" elapsed="0.000378"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-06-14T23:37:55.261376" level="INFO">${body} = {
    "device": {
        "unique-id": "netopeer2",
        "ssh-client-params": {
          "credentials": {
              "username": "root",
              "passwords": [ "incorrect" ]
          },
...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>{hostkey}</arg>
<arg>${hostkey}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-06-14T23:37:55.261059" elapsed="0.000355"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:37:55.265349" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:55.466740" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:55.868906" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:55.871056" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${whitelist}</arg>
<arg>data=${body}</arg>
<arg>headers=${HEADERS}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-06-14T23:37:55.261598" elapsed="0.614653">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-06-14T23:37:55.876724" elapsed="0.000125"/>
</kw>
<arg>netopeer2</arg>
<arg>${NETOPEER_PUB_KEY}</arg>
<arg>root</arg>
<arg>incorrect</arg>
<doc>Registration call-home device with SSH transport using latest models</doc>
<status status="FAIL" start="2026-06-14T23:37:55.251629" elapsed="0.625531">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker-compose up -d</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-06-14T23:37:55.877531" elapsed="0.000051"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>90s</arg>
<arg>2s</arg>
<arg>NetconfCallHome.Check Device Status</arg>
<arg>FAILED_AUTH_FAILURE</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-06-14T23:37:55.878006" elapsed="0.000055"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>30s</arg>
<arg>2s</arg>
<arg>Run Keyword And Expect Error</arg>
<arg>*</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${mount_point_url}</arg>
<arg>${netconf_mount_expected_values}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-06-14T23:37:55.878449" elapsed="0.000054"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:55.880181" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-06-14T23:37:56.157610" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-06-14T23:37:56.158075" level="INFO">${stdout} = </msg>
<msg time="2026-06-14T23:37:56.158147" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-06-14T23:37:56.158218" level="INFO">${rc} = 1</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker-compose logs</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:55.879982" elapsed="0.278277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T23:37:56.159384" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T23:37:56.158732" elapsed="0.000720"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:56.159999" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-06-14T23:37:56.475801" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-06-14T23:37:56.476324" level="INFO">${stdout} = </msg>
<msg time="2026-06-14T23:37:56.476425" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-06-14T23:37:56.476517" level="INFO">${rc} = 1</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker-compose down</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:56.159688" elapsed="0.316881"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:56.477501" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-06-14T23:37:56.544286" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:37:56.544647" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-06-14T23:37:56.544833" level="INFO">${stderr} = </msg>
<msg time="2026-06-14T23:37:56.544941" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker ps -a</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:56.477042" elapsed="0.067955"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:56.545686" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-06-14T23:37:56.591299" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ./configuration-files</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:56.545421" elapsed="0.046047"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:37:56.596530" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:56.798244" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:57.200825" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:57.204007" level="INFO">${resp} = None</msg>
<msg time="2026-06-14T23:37:57.204132" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${whitelist}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-06-14T23:37:56.591875" elapsed="0.617680">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:37:57.213317" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:37:57.414885" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:37:57.817033" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:37:57.819387" level="INFO">${resp} = None</msg>
<msg time="2026-06-14T23:37:57.819498" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${netconf_keystore_data_url}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-06-14T23:37:57.210015" elapsed="0.614568">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Tears down the docker running netopeer and deletes entry from the whitelist.</doc>
<status status="FAIL" start="2026-06-14T23:37:55.879262" elapsed="1.945752">Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Correct credentials should result to successful mount. CONNECTED should be the device status.</doc>
<status status="FAIL" start="2026-06-14T23:37:54.892994" elapsed="2.932186">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s1-t3" name="CallHome over SSH with correct global credentials" line="53">
<kw name="Test Setup" owner="NetconfCallHome" type="SETUP">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:37:57.827820" level="INFO">Creating Session using : alias=session, url=http://10.30.171.92:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7aecf1b7c550&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-06-14T23:37:57.827403" elapsed="0.000660"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:57.828404" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-06-14T23:37:57.841830" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ./configuration-files &amp;&amp; mkdir configuration-files</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:57.828262" elapsed="0.013708"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:57.842531" level="INFO">Executing command 'ssh-keygen -q -t rsa -b 2048 -N '' -m pem -f ./configuration-files/ssh_host_rsa_key'.</msg>
<msg time="2026-06-14T23:37:57.952207" level="INFO">Command exited with return code 0.</msg>
<arg>ssh-keygen -q -t rsa -b 2048 -N '' -m pem -f ./configuration-files/ssh_host_rsa_key</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:57.842300" elapsed="0.110044"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:57.959099" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-06-14T23:37:57.999140" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:37:57.999365" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDDIOniHUdqz8903Udz0Rkwfx5wOljEfVMc2afwCKHCFML3DHwyolfRX4Y9D35/cQhA70DNv0fTGIVGdXhqjfuktsaA6LIpLooP/DDwmWSoA8Pfc1M37f3bjIxzMn+3IKX+1T/LpbRWpNLCMpNVaUWY4plQCJIWhClDSYMEVVDx...</msg>
<var>${public_key}</var>
<arg>cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}'</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:57.958855" elapsed="0.040568"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-06-14T23:37:58.010418" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDDIOniHUdqz8903Udz0Rkwfx5wOljEfVMc2afwCKHCFML3DHwyolfRX4Y9D35/cQhA70DNv0fTGIVGdXhqjfuktsaA6LIpLooP/DDwmWSoA8Pfc1M37f3bjIxzMn+3IKX+1T/LpbRWpNLCMpNVaUWY4plQCJIWhClDSYMEVVDx...</msg>
<arg>${NETOPEER_PUB_KEY}</arg>
<arg>${public_key}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-06-14T23:37:57.999838" elapsed="0.010652"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-06-14T23:37:57.826987" elapsed="0.183594"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-06-14T23:37:58.041634" level="INFO">'/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-netconf-server.xml' -&gt; '/home/jenkins/configuration-files/ietf-netconf-server.xml'</msg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-netconf-server.xml</arg>
<arg>configuration-files/ietf-netconf-server.xml</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-06-14T23:37:58.011241" elapsed="0.030572"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-06-14T23:37:58.048553" level="INFO">'/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-keystore.xml' -&gt; '/home/jenkins/configuration-files/ietf-keystore.xml'</msg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-keystore.xml</arg>
<arg>configuration-files/ietf-keystore.xml</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-06-14T23:37:58.042136" elapsed="0.006499"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-06-14T23:37:58.010854" elapsed="0.037867"/>
</kw>
<kw name="Register global credentials for SSH call-home devices" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-06-14T23:37:58.049643" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/variables/netconf/callhome/json/create_global_credentials.json"&gt;/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/variables/netconf/callhome/json/create_global_credentials.json&lt;/a&gt;'.</msg>
<msg time="2026-06-14T23:37:58.049902" level="INFO">${template} = {
  "credentials": {
    "username": "{username}",
    "passwords": [ "{password}" ]
  }
}
</msg>
<var>${template}</var>
<arg>${CREATE_GLOBAL_CREDENTIALS_REQ}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-06-14T23:37:58.049430" elapsed="0.000511"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-06-14T23:37:58.050480" level="INFO">${body} = {
  "credentials": {
    "username": "root",
    "passwords": [ "{password}" ]
  }
}
</msg>
<var>${body}</var>
<arg>${template}</arg>
<arg>{username}</arg>
<arg>${username}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-06-14T23:37:58.050143" elapsed="0.000373"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-06-14T23:37:58.051053" level="INFO">${body} = {
  "credentials": {
    "username": "root",
    "passwords": [ "root" ]
  }
}
</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>{password}</arg>
<arg>${password}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-06-14T23:37:58.050712" elapsed="0.000377"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:37:58.054880" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials</msg>
<msg time="2026-06-14T23:37:58.256218" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials</msg>
<msg time="2026-06-14T23:37:58.658289" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials</msg>
<msg time="2026-06-14T23:37:58.660807" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${global_config_url}</arg>
<arg>data=${body}</arg>
<arg>headers=${HEADERS}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-06-14T23:37:58.051273" elapsed="0.615170">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-06-14T23:37:58.667017" elapsed="0.000068"/>
</kw>
<arg>root</arg>
<arg>root</arg>
<doc>Set global credentials for SSH call-home devices</doc>
<status status="FAIL" start="2026-06-14T23:37:58.049000" elapsed="0.618346">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Register SSH call-home device in ODL controller" owner="NetconfCallHome">
<arg>netopeer2</arg>
<arg>${NETOPEER_PUB_KEY}</arg>
<doc>Registration call-home device with SSH transport using latest models</doc>
<status status="NOT RUN" start="2026-06-14T23:37:58.668125" elapsed="0.000068"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker-compose up -d</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-06-14T23:37:58.668537" elapsed="0.000049"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>90s</arg>
<arg>2s</arg>
<arg>NetconfCallHome.Check Device Status</arg>
<arg>CONNECTED</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-06-14T23:37:58.668994" elapsed="0.000023"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>30s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${mount_point_url}</arg>
<arg>${netconf_mount_expected_values}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-06-14T23:37:58.669168" elapsed="0.000020"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:58.670099" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-06-14T23:37:58.935400" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-06-14T23:37:58.935846" level="INFO">${stdout} = </msg>
<msg time="2026-06-14T23:37:58.935948" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-06-14T23:37:58.936043" level="INFO">${rc} = 1</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker-compose logs</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:58.669888" elapsed="0.266208"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T23:37:58.937319" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T23:37:58.936567" elapsed="0.000844"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:58.938150" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-06-14T23:37:59.226197" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-06-14T23:37:59.226703" level="INFO">${stdout} = </msg>
<msg time="2026-06-14T23:37:59.226843" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-06-14T23:37:59.226943" level="INFO">${rc} = 1</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker-compose down</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:58.937725" elapsed="0.289273"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:59.228077" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-06-14T23:37:59.299941" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:37:59.300231" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-06-14T23:37:59.300350" level="INFO">${stderr} = </msg>
<msg time="2026-06-14T23:37:59.300440" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker ps -a</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:59.227531" elapsed="0.072958"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:37:59.301204" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-06-14T23:37:59.347826" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ./configuration-files</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:37:59.300937" elapsed="0.047063"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:37:59.354458" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:59.556410" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:59.958545" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:59.961173" level="INFO">${resp} = None</msg>
<msg time="2026-06-14T23:37:59.961596" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${whitelist}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-06-14T23:37:59.348361" elapsed="0.618309">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:37:59.971198" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:00.172753" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:00.575345" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:00.578183" level="INFO">${resp} = None</msg>
<msg time="2026-06-14T23:38:00.578313" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${netconf_keystore_data_url}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-06-14T23:37:59.967232" elapsed="0.616089">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Tears down the docker running netopeer and deletes entry from the whitelist.</doc>
<status status="FAIL" start="2026-06-14T23:37:58.669524" elapsed="1.914049">Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>CallHome SSH device registered with global credentials should result to successful mount.</doc>
<status status="FAIL" start="2026-06-14T23:37:57.825917" elapsed="2.757771">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s1-t4" name="CallHome over SSH with incorrect global credentials" line="71">
<kw name="Test Setup" owner="NetconfCallHome" type="SETUP">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:38:00.585934" level="INFO">Creating Session using : alias=session, url=http://10.30.171.92:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7aecf2d3f510&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-06-14T23:38:00.585523" elapsed="0.000646"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:00.586523" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-06-14T23:38:00.600345" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ./configuration-files &amp;&amp; mkdir configuration-files</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:00.586379" elapsed="0.014050"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:00.600782" level="INFO">Executing command 'ssh-keygen -q -t rsa -b 2048 -N '' -m pem -f ./configuration-files/ssh_host_rsa_key'.</msg>
<msg time="2026-06-14T23:38:00.978517" level="INFO">Command exited with return code 0.</msg>
<arg>ssh-keygen -q -t rsa -b 2048 -N '' -m pem -f ./configuration-files/ssh_host_rsa_key</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:00.600621" elapsed="0.378176"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:00.979561" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-06-14T23:38:01.032040" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:38:01.032319" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQC7FGgpg5x8443XEs3n+krduiFX8xPyovbAF3caM80hCPCi1oegkgNzf/0n6vKrnj0uXd6yu3nroaOhXX6j1YvAeQxYm1H+pW2Jz+NL2Wz3YSklnNhTcCtdi9somIrgaWBZVL01g7AwB9pIFQ96zNiiBYZzEfwg7F1xBsWThA2n...</msg>
<var>${public_key}</var>
<arg>cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}'</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:00.979258" elapsed="0.053122"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-06-14T23:38:01.040049" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQC7FGgpg5x8443XEs3n+krduiFX8xPyovbAF3caM80hCPCi1oegkgNzf/0n6vKrnj0uXd6yu3nroaOhXX6j1YvAeQxYm1H+pW2Jz+NL2Wz3YSklnNhTcCtdi9somIrgaWBZVL01g7AwB9pIFQ96zNiiBYZzEfwg7F1xBsWThA2n...</msg>
<arg>${NETOPEER_PUB_KEY}</arg>
<arg>${public_key}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-06-14T23:38:01.032814" elapsed="0.007319"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-06-14T23:38:00.585123" elapsed="0.455106"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-06-14T23:38:01.074728" level="INFO">'/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-netconf-server.xml' -&gt; '/home/jenkins/configuration-files/ietf-netconf-server.xml'</msg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-netconf-server.xml</arg>
<arg>configuration-files/ietf-netconf-server.xml</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-06-14T23:38:01.040909" elapsed="0.033933"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-06-14T23:38:01.081484" level="INFO">'/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-keystore.xml' -&gt; '/home/jenkins/configuration-files/ietf-keystore.xml'</msg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-keystore.xml</arg>
<arg>configuration-files/ietf-keystore.xml</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-06-14T23:38:01.075125" elapsed="0.006440"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-06-14T23:38:01.040494" elapsed="0.041159"/>
</kw>
<kw name="Register global credentials for SSH call-home devices" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-06-14T23:38:01.082576" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/variables/netconf/callhome/json/create_global_credentials.json"&gt;/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/variables/netconf/callhome/json/create_global_credentials.json&lt;/a&gt;'.</msg>
<msg time="2026-06-14T23:38:01.082792" level="INFO">${template} = {
  "credentials": {
    "username": "{username}",
    "passwords": [ "{password}" ]
  }
}
</msg>
<var>${template}</var>
<arg>${CREATE_GLOBAL_CREDENTIALS_REQ}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-06-14T23:38:01.082362" elapsed="0.000468"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-06-14T23:38:01.083365" level="INFO">${body} = {
  "credentials": {
    "username": "root",
    "passwords": [ "{password}" ]
  }
}
</msg>
<var>${body}</var>
<arg>${template}</arg>
<arg>{username}</arg>
<arg>${username}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-06-14T23:38:01.083028" elapsed="0.000373"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-06-14T23:38:01.083968" level="INFO">${body} = {
  "credentials": {
    "username": "root",
    "passwords": [ "incorrect" ]
  }
}
</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>{password}</arg>
<arg>${password}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-06-14T23:38:01.083597" elapsed="0.000415"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:38:01.087450" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials</msg>
<msg time="2026-06-14T23:38:01.288830" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials</msg>
<msg time="2026-06-14T23:38:01.690830" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials</msg>
<msg time="2026-06-14T23:38:01.692619" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${global_config_url}</arg>
<arg>data=${body}</arg>
<arg>headers=${HEADERS}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-06-14T23:38:01.084218" elapsed="0.613666">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:01.698333" elapsed="0.000055"/>
</kw>
<arg>root</arg>
<arg>incorrect</arg>
<doc>Set global credentials for SSH call-home devices</doc>
<status status="FAIL" start="2026-06-14T23:38:01.081934" elapsed="0.616679">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Register SSH call-home device in ODL controller" owner="NetconfCallHome">
<arg>netopeer2</arg>
<arg>${NETOPEER_PUB_KEY}</arg>
<doc>Registration call-home device with SSH transport using latest models</doc>
<status status="NOT RUN" start="2026-06-14T23:38:01.699259" elapsed="0.000058"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker-compose up -d</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:01.699626" elapsed="0.000046"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>90s</arg>
<arg>2s</arg>
<arg>NetconfCallHome.Check Device Status</arg>
<arg>FAILED_AUTH_FAILURE</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:01.700060" elapsed="0.000048"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>30s</arg>
<arg>2s</arg>
<arg>Run Keyword And Expect Error</arg>
<arg>*</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${mount_point_url}</arg>
<arg>${netconf_mount_expected_values}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:01.700425" elapsed="0.000044"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:01.702216" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-06-14T23:38:01.989308" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-06-14T23:38:01.989578" level="INFO">${stdout} = </msg>
<msg time="2026-06-14T23:38:01.989679" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-06-14T23:38:01.989818" level="INFO">${rc} = 1</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker-compose logs</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:01.701934" elapsed="0.287939"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T23:38:01.990975" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T23:38:01.990316" elapsed="0.000756"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:01.991743" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-06-14T23:38:02.290958" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-06-14T23:38:02.291249" level="INFO">${stdout} = </msg>
<msg time="2026-06-14T23:38:02.291350" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-06-14T23:38:02.291443" level="INFO">${rc} = 1</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker-compose down</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:01.991379" elapsed="0.300115"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:02.292286" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-06-14T23:38:02.359888" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:38:02.360158" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-06-14T23:38:02.360262" level="INFO">${stderr} = </msg>
<msg time="2026-06-14T23:38:02.360355" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker ps -a</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:02.291904" elapsed="0.068502"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:02.361033" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-06-14T23:38:02.407891" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ./configuration-files</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:02.360803" elapsed="0.047231"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:38:02.412897" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:02.614870" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:03.017387" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:03.020040" level="INFO">${resp} = None</msg>
<msg time="2026-06-14T23:38:03.020154" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${whitelist}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-06-14T23:38:02.408353" elapsed="0.616877">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:38:03.028957" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:03.230301" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:03.632675" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:03.635196" level="INFO">${resp} = None</msg>
<msg time="2026-06-14T23:38:03.635305" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${netconf_keystore_data_url}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-06-14T23:38:03.025592" elapsed="0.614955">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Tears down the docker running netopeer and deletes entry from the whitelist.</doc>
<status status="FAIL" start="2026-06-14T23:38:01.701159" elapsed="1.939825">Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>CallHome SSH device registered with wrong global credentials should fail to mount.</doc>
<status status="FAIL" start="2026-06-14T23:38:00.584200" elapsed="3.056970">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s1-t5" name="CallHome with Incorrect Node-id" line="91">
<kw name="Test Setup" owner="NetconfCallHome" type="SETUP">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:38:03.644152" level="INFO">Creating Session using : alias=session, url=http://10.30.171.92:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7aecf2e5a510&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-06-14T23:38:03.643821" elapsed="0.000538"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:03.644737" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-06-14T23:38:03.658450" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ./configuration-files &amp;&amp; mkdir configuration-files</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:03.644615" elapsed="0.013977"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:03.659201" level="INFO">Executing command 'ssh-keygen -q -t rsa -b 2048 -N '' -m pem -f ./configuration-files/ssh_host_rsa_key'.</msg>
<msg time="2026-06-14T23:38:03.793436" level="INFO">Command exited with return code 0.</msg>
<arg>ssh-keygen -q -t rsa -b 2048 -N '' -m pem -f ./configuration-files/ssh_host_rsa_key</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:03.658964" elapsed="0.134715"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:03.794562" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-06-14T23:38:03.843862" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:38:03.844121" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCOaJkqd+TSmAH3cbZsx4H649+tM2+v09S/oQm6bg6LpOo/gL+UCBWKr4eryYejGAL+aSjlLCoClrq6XggLBPGZZALhLSVw7y0BdvTq4n8rk47sEi24fbUtNHnjcPMd2+05IWinXse03lvPp7M+H6rbwRC8kj50zz9ZLWSpkMKD...</msg>
<var>${public_key}</var>
<arg>cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}'</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:03.794235" elapsed="0.049947"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-06-14T23:38:03.852100" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCOaJkqd+TSmAH3cbZsx4H649+tM2+v09S/oQm6bg6LpOo/gL+UCBWKr4eryYejGAL+aSjlLCoClrq6XggLBPGZZALhLSVw7y0BdvTq4n8rk47sEi24fbUtNHnjcPMd2+05IWinXse03lvPp7M+H6rbwRC8kj50zz9ZLWSpkMKD...</msg>
<arg>${NETOPEER_PUB_KEY}</arg>
<arg>${public_key}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-06-14T23:38:03.844578" elapsed="0.007590"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-06-14T23:38:03.643444" elapsed="0.208821"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-06-14T23:38:03.892379" level="INFO">'/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-netconf-server.xml' -&gt; '/home/jenkins/configuration-files/ietf-netconf-server.xml'</msg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-netconf-server.xml</arg>
<arg>configuration-files/ietf-netconf-server.xml</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-06-14T23:38:03.852942" elapsed="0.039578"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-06-14T23:38:03.903329" level="INFO">'/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-keystore.xml' -&gt; '/home/jenkins/configuration-files/ietf-keystore.xml'</msg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-keystore.xml</arg>
<arg>configuration-files/ietf-keystore.xml</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-06-14T23:38:03.892896" elapsed="0.010514"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-06-14T23:38:03.852524" elapsed="0.050978"/>
</kw>
<kw name="Register SSH call-home device in ODL controller" owner="NetconfCallHome">
<if>
<branch type="IF" condition="'${username}' == '${EMPTY}' or '${password}' == '${EMPTY}'">
<kw name="Get create device request without credentials template" owner="NetconfCallHome">
<status status="NOT RUN" start="2026-06-14T23:38:03.909173" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-06-14T23:38:03.904431" elapsed="0.004817"/>
</branch>
<branch type="ELSE">
<kw name="Get create device request template" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-06-14T23:38:03.910128" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/variables/netconf/callhome/json/create_ssh_device.json"&gt;/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/variables/netconf/callhome/json/create_ssh_device.json&lt;/a&gt;'.</msg>
<msg time="2026-06-14T23:38:03.910325" level="INFO">${template} = {
    "device": {
        "unique-id": "{device_name}",
        "ssh-client-params": {
          "credentials": {
              "username": "{username}",
              "passwords": [ "{password}" ]
  ...</msg>
<var>${template}</var>
<arg>${CREATE_SSH_DEVICE_REQ}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-06-14T23:38:03.909908" elapsed="0.000454"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-06-14T23:38:03.911102" level="INFO">${template} = {
    "device": {
        "unique-id": "{device_name}",
        "ssh-client-params": {
          "credentials": {
              "username": "{username}",
              "passwords": [ "{password}" ]
  ...</msg>
<arg>${template}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-06-14T23:38:03.910592" elapsed="0.000570"/>
</kw>
<status status="PASS" start="2026-06-14T23:38:03.909504" elapsed="0.001734"/>
</kw>
<status status="PASS" start="2026-06-14T23:38:03.909292" elapsed="0.001979"/>
</branch>
<status status="PASS" start="2026-06-14T23:38:03.904387" elapsed="0.006917"/>
</if>
<kw name="Replace String" owner="String">
<msg time="2026-06-14T23:38:03.911869" level="INFO">${body} = {
    "device": {
        "unique-id": "incorrect_hostname",
        "ssh-client-params": {
          "credentials": {
              "username": "{username}",
              "passwords": [ "{password}"...</msg>
<var>${body}</var>
<arg>${template}</arg>
<arg>{device_name}</arg>
<arg>${device_name}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-06-14T23:38:03.911498" elapsed="0.000409"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-06-14T23:38:03.912427" level="INFO">${body} = {
    "device": {
        "unique-id": "incorrect_hostname",
        "ssh-client-params": {
          "credentials": {
              "username": "root",
              "passwords": [ "{password}" ]
   ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>{username}</arg>
<arg>${username}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-06-14T23:38:03.912109" elapsed="0.000355"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-06-14T23:38:03.913102" level="INFO">${body} = {
    "device": {
        "unique-id": "incorrect_hostname",
        "ssh-client-params": {
          "credentials": {
              "username": "root",
              "passwords": [ "root" ]
         ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>{password}</arg>
<arg>${password}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-06-14T23:38:03.912744" elapsed="0.000396"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-06-14T23:38:03.913709" level="INFO">${body} = {
    "device": {
        "unique-id": "incorrect_hostname",
        "ssh-client-params": {
          "credentials": {
              "username": "root",
              "passwords": [ "root" ]
         ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>{hostkey}</arg>
<arg>${hostkey}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-06-14T23:38:03.913338" elapsed="0.000409"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:38:03.916948" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:04.118598" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:04.521228" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:04.523890" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${whitelist}</arg>
<arg>data=${body}</arg>
<arg>headers=${HEADERS}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-06-14T23:38:03.913961" elapsed="0.615749">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:04.530292" elapsed="0.000065"/>
</kw>
<arg>incorrect_hostname</arg>
<arg>${INCORRECT_PUB_KEY}</arg>
<arg>root</arg>
<arg>root</arg>
<doc>Registration call-home device with SSH transport using latest models</doc>
<status status="FAIL" start="2026-06-14T23:38:03.903903" elapsed="0.626712">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Register SSH call-home device in ODL controller" owner="NetconfCallHome">
<arg>netopeer2</arg>
<arg>${NETOPEER_PUB_KEY}</arg>
<doc>Registration call-home device with SSH transport using latest models</doc>
<status status="NOT RUN" start="2026-06-14T23:38:04.531288" elapsed="0.000061"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker-compose up -d</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:04.531745" elapsed="0.000084"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>90s</arg>
<arg>2s</arg>
<arg>NetconfCallHome.Check Device Status</arg>
<arg>DISCONNECTED</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:04.532214" elapsed="0.000050"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>30s</arg>
<arg>2s</arg>
<arg>Run Keyword And Expect Error</arg>
<arg>*</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${mount_point_url}</arg>
<arg>${netconf_mount_expected_values}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:04.532452" elapsed="0.000024"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:04.533464" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-06-14T23:38:04.799862" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-06-14T23:38:04.800246" level="INFO">${stdout} = </msg>
<msg time="2026-06-14T23:38:04.800347" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-06-14T23:38:04.800441" level="INFO">${rc} = 1</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker-compose logs</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:04.533255" elapsed="0.267240"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T23:38:04.801659" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T23:38:04.800984" elapsed="0.000805"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:04.802495" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-06-14T23:38:05.119415" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-06-14T23:38:05.119841" level="INFO">${stdout} = </msg>
<msg time="2026-06-14T23:38:05.119944" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-06-14T23:38:05.120036" level="INFO">${rc} = 1</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker-compose down</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:04.802113" elapsed="0.317977"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:05.121023" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-06-14T23:38:05.177893" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:38:05.178310" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-06-14T23:38:05.178410" level="INFO">${stderr} = </msg>
<msg time="2026-06-14T23:38:05.178500" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker ps -a</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:05.120540" elapsed="0.058010"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:05.179237" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-06-14T23:38:05.232094" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ./configuration-files</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:05.178991" elapsed="0.053373"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:38:05.237895" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:05.439559" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:05.841622" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:05.843889" level="INFO">${resp} = None</msg>
<msg time="2026-06-14T23:38:05.844033" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${whitelist}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-06-14T23:38:05.232902" elapsed="0.616336">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:38:05.852827" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:06.054353" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:06.456714" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:06.459047" level="INFO">${resp} = None</msg>
<msg time="2026-06-14T23:38:06.459155" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${netconf_keystore_data_url}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-06-14T23:38:05.849605" elapsed="0.614817">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Tears down the docker running netopeer and deletes entry from the whitelist.</doc>
<status status="FAIL" start="2026-06-14T23:38:04.532871" elapsed="1.931974">Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>CallHome from device that does not have an entry in per-device credential with result to mount point failure.</doc>
<status status="FAIL" start="2026-06-14T23:38:03.641883" elapsed="2.823122">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s1-t6" name="CallHome with Rogue Devices" line="111">
<kw name="Test Setup" owner="NetconfCallHome" type="SETUP">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:38:06.467911" level="INFO">Creating Session using : alias=session, url=http://10.30.171.92:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7aecf1b8b410&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-06-14T23:38:06.467605" elapsed="0.000686"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:06.468698" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-06-14T23:38:06.481273" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ./configuration-files &amp;&amp; mkdir configuration-files</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:06.468586" elapsed="0.012830"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:06.482048" level="INFO">Executing command 'ssh-keygen -q -t rsa -b 2048 -N '' -m pem -f ./configuration-files/ssh_host_rsa_key'.</msg>
<msg time="2026-06-14T23:38:06.683104" level="INFO">Command exited with return code 0.</msg>
<arg>ssh-keygen -q -t rsa -b 2048 -N '' -m pem -f ./configuration-files/ssh_host_rsa_key</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:06.481802" elapsed="0.201444"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:06.683876" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-06-14T23:38:06.735241" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:38:06.735480" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCq6l8Tie9UJ7puT5CQfpn+UXLTDG5NwpmuYRGMe1RG4JTUPa8ZpITbnTlByTqBvg1sgSg3QqPxj+EM33PAXs1x2IXQo9hbkZPpU2g0JwRZekb+3g6lqV+1zKsoV0NgsiNcUCbloM5X7Qlhul0/4N3LzpWmkpc5Exoi8PdWaxHH...</msg>
<var>${public_key}</var>
<arg>cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}'</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:06.683574" elapsed="0.051965"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-06-14T23:38:06.744514" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCq6l8Tie9UJ7puT5CQfpn+UXLTDG5NwpmuYRGMe1RG4JTUPa8ZpITbnTlByTqBvg1sgSg3QqPxj+EM33PAXs1x2IXQo9hbkZPpU2g0JwRZekb+3g6lqV+1zKsoV0NgsiNcUCbloM5X7Qlhul0/4N3LzpWmkpc5Exoi8PdWaxHH...</msg>
<arg>${NETOPEER_PUB_KEY}</arg>
<arg>${public_key}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-06-14T23:38:06.735962" elapsed="0.008660"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-06-14T23:38:06.467280" elapsed="0.277514"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-06-14T23:38:06.781872" level="INFO">'/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-netconf-server.xml' -&gt; '/home/jenkins/configuration-files/ietf-netconf-server.xml'</msg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-netconf-server.xml</arg>
<arg>configuration-files/ietf-netconf-server.xml</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-06-14T23:38:06.745885" elapsed="0.036118"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-06-14T23:38:06.789368" level="INFO">'/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-keystore.xml' -&gt; '/home/jenkins/configuration-files/ietf-keystore.xml'</msg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/ssh/ietf-keystore.xml</arg>
<arg>configuration-files/ietf-keystore.xml</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-06-14T23:38:06.782315" elapsed="0.007132"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-06-14T23:38:06.745179" elapsed="0.044355"/>
</kw>
<kw name="Register SSH call-home device in ODL controller" owner="NetconfCallHome">
<if>
<branch type="IF" condition="'${username}' == '${EMPTY}' or '${password}' == '${EMPTY}'">
<kw name="Get create device request without credentials template" owner="NetconfCallHome">
<status status="NOT RUN" start="2026-06-14T23:38:06.795108" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-06-14T23:38:06.790435" elapsed="0.004747"/>
</branch>
<branch type="ELSE">
<kw name="Get create device request template" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-06-14T23:38:06.796023" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/variables/netconf/callhome/json/create_ssh_device.json"&gt;/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/variables/netconf/callhome/json/create_ssh_device.json&lt;/a&gt;'.</msg>
<msg time="2026-06-14T23:38:06.796213" level="INFO">${template} = {
    "device": {
        "unique-id": "{device_name}",
        "ssh-client-params": {
          "credentials": {
              "username": "{username}",
              "passwords": [ "{password}" ]
  ...</msg>
<var>${template}</var>
<arg>${CREATE_SSH_DEVICE_REQ}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-06-14T23:38:06.795807" elapsed="0.000442"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-06-14T23:38:06.796937" level="INFO">${template} = {
    "device": {
        "unique-id": "{device_name}",
        "ssh-client-params": {
          "credentials": {
              "username": "{username}",
              "passwords": [ "{password}" ]
  ...</msg>
<arg>${template}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-06-14T23:38:06.796463" elapsed="0.000535"/>
</kw>
<status status="PASS" start="2026-06-14T23:38:06.795424" elapsed="0.001649"/>
</kw>
<status status="PASS" start="2026-06-14T23:38:06.795224" elapsed="0.001882"/>
</branch>
<status status="PASS" start="2026-06-14T23:38:06.790396" elapsed="0.006744"/>
</if>
<kw name="Replace String" owner="String">
<msg time="2026-06-14T23:38:06.797663" level="INFO">${body} = {
    "device": {
        "unique-id": "netopeer2",
        "ssh-client-params": {
          "credentials": {
              "username": "{username}",
              "passwords": [ "{password}" ]
      ...</msg>
<var>${body}</var>
<arg>${template}</arg>
<arg>{device_name}</arg>
<arg>${device_name}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-06-14T23:38:06.797326" elapsed="0.000408"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-06-14T23:38:06.798265" level="INFO">${body} = {
    "device": {
        "unique-id": "netopeer2",
        "ssh-client-params": {
          "credentials": {
              "username": "root",
              "passwords": [ "{password}" ]
          },...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>{username}</arg>
<arg>${username}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-06-14T23:38:06.797964" elapsed="0.000328"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-06-14T23:38:06.798662" level="INFO">${body} = {
    "device": {
        "unique-id": "netopeer2",
        "ssh-client-params": {
          "credentials": {
              "username": "root",
              "passwords": [ "root" ]
          },
     ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>{password}</arg>
<arg>${password}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-06-14T23:38:06.798437" elapsed="0.000252"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-06-14T23:38:06.799130" level="INFO">${body} = {
    "device": {
        "unique-id": "netopeer2",
        "ssh-client-params": {
          "credentials": {
              "username": "root",
              "passwords": [ "root" ]
          },
     ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>{hostkey}</arg>
<arg>${hostkey}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-06-14T23:38:06.798894" elapsed="0.000263"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:38:06.802057" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:07.003491" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:07.405739" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:07.408339" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${whitelist}</arg>
<arg>data=${body}</arg>
<arg>headers=${HEADERS}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-06-14T23:38:06.799291" elapsed="0.614899">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:07.414681" elapsed="0.000060"/>
</kw>
<arg>netopeer2</arg>
<arg>${INCORRECT_PUB_KEY}</arg>
<arg>root</arg>
<arg>root</arg>
<doc>Registration call-home device with SSH transport using latest models</doc>
<status status="FAIL" start="2026-06-14T23:38:06.789935" elapsed="0.625080">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker-compose up -d</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:07.415381" elapsed="0.000052"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>90s</arg>
<arg>2s</arg>
<arg>NetconfCallHome.Check Device Status</arg>
<arg>FAILED_NOT_ALLOWED</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:07.415839" elapsed="0.000050"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>30s</arg>
<arg>2s</arg>
<arg>Run Keyword And Expect Error</arg>
<arg>*</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${mount_point_url}</arg>
<arg>${netconf_mount_expected_values}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:07.416229" elapsed="0.000047"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:07.417721" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-06-14T23:38:07.684596" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-06-14T23:38:07.685036" level="INFO">${stdout} = </msg>
<msg time="2026-06-14T23:38:07.685146" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-06-14T23:38:07.685246" level="INFO">${rc} = 1</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker-compose logs</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:07.417518" elapsed="0.267784"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T23:38:07.686562" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T23:38:07.685830" elapsed="0.000834"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:07.687441" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-06-14T23:38:08.000669" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-06-14T23:38:08.000975" level="INFO">${stdout} = </msg>
<msg time="2026-06-14T23:38:08.001075" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-06-14T23:38:08.001168" level="INFO">${rc} = 1</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker-compose down</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:07.687039" elapsed="0.314179"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:08.001998" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-06-14T23:38:08.076837" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:38:08.077163" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-06-14T23:38:08.077228" level="INFO">${stderr} = </msg>
<msg time="2026-06-14T23:38:08.077291" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker ps -a</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:08.001572" elapsed="0.075754"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:08.077915" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-06-14T23:38:08.128143" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ./configuration-files</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:08.077690" elapsed="0.050600"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:38:08.133512" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:08.335037" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:08.737869" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:08.740508" level="INFO">${resp} = None</msg>
<msg time="2026-06-14T23:38:08.740617" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${whitelist}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-06-14T23:38:08.128817" elapsed="0.617096">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:38:08.749796" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:08.951458" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:09.353628" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:09.356165" level="INFO">${resp} = None</msg>
<msg time="2026-06-14T23:38:09.356269" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${netconf_keystore_data_url}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-06-14T23:38:08.746357" elapsed="0.615577">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Tears down the docker running netopeer and deletes entry from the whitelist.</doc>
<status status="FAIL" start="2026-06-14T23:38:07.417103" elapsed="1.945230">Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>A Rogue Device will fail to callhome and wont be able to mount because the keys are not added in whitelist.
FAILED_NOT_ALLOWED should be the device status.</doc>
<status status="FAIL" start="2026-06-14T23:38:06.465551" elapsed="2.896946">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s1-t7" name="CallHome over TLS with correct certificate and key" line="131">
<kw name="Test Setup" owner="NetconfCallHome" type="SETUP">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:38:09.375915" level="INFO">Creating Session using : alias=session, url=http://10.30.171.92:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7aecf1be1a90&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-06-14T23:38:09.375264" elapsed="0.001036"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:09.376903" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-06-14T23:38:09.390095" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ./configuration-files &amp;&amp; mkdir configuration-files</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:09.376677" elapsed="0.013518"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:09.390580" level="INFO">Executing command 'ssh-keygen -q -t rsa -b 2048 -N '' -m pem -f ./configuration-files/ssh_host_rsa_key'.</msg>
<msg time="2026-06-14T23:38:09.723699" level="INFO">Command exited with return code 0.</msg>
<arg>ssh-keygen -q -t rsa -b 2048 -N '' -m pem -f ./configuration-files/ssh_host_rsa_key</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:09.390422" elapsed="0.333543"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:09.724794" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-06-14T23:38:09.780551" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:38:09.780924" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCpEVK2LAPe6sl6TBC0yHP4KbsuH61zKXOXxTY1riDFfaNsxKhj0Jb6nvDi1oAh9k/FFrRgaMhJ7TKXuHAc2/t0IbnEKsUu8lsv1gFB+c75gyk/MUHMpxfnl0sWOZGmKJGMUT4fjHx4/qFL1lN6TKWJjjBD94IzU4RJ+AQCPiTS...</msg>
<var>${public_key}</var>
<arg>cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}'</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:09.724485" elapsed="0.056504"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-06-14T23:38:09.789991" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCpEVK2LAPe6sl6TBC0yHP4KbsuH61zKXOXxTY1riDFfaNsxKhj0Jb6nvDi1oAh9k/FFrRgaMhJ7TKXuHAc2/t0IbnEKsUu8lsv1gFB+c75gyk/MUHMpxfnl0sWOZGmKJGMUT4fjHx4/qFL1lN6TKWJjjBD94IzU4RJ+AQCPiTS...</msg>
<arg>${NETOPEER_PUB_KEY}</arg>
<arg>${public_key}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-06-14T23:38:09.781430" elapsed="0.008743"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-06-14T23:38:09.374431" elapsed="0.415970"/>
</kw>
<kw name="Apply TLS-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Generate certificates for TLS configuration" owner="NetconfCallHome">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:09.792496" level="INFO">Executing command 'rm -rf ./certs &amp;&amp; mkdir ./certs'.</msg>
<msg time="2026-06-14T23:38:09.831905" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:38:09.832139" level="INFO">${stdout} = </msg>
<var>${stdout}</var>
<arg>rm -rf ./certs &amp;&amp; mkdir ./certs</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:09.792372" elapsed="0.039826"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-06-14T23:38:09.880178" level="INFO">'/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/x509_v3.cfg' -&gt; '/home/jenkins/./x509_v3.cfg'</msg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/x509_v3.cfg</arg>
<arg>./x509_v3.cfg</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-06-14T23:38:09.832533" elapsed="0.047878"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:09.881256" level="INFO">Executing command 'openssl genrsa -out ./certs/ca.key 2048'.</msg>
<msg time="2026-06-14T23:38:10.126972" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:38:10.127351" level="INFO">${stdout} = </msg>
<var>${stdout}</var>
<arg>openssl genrsa -out ./certs/ca.key 2048</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:09.880938" elapsed="0.246475"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:10.128237" level="INFO">Executing command 'openssl req -x509 -new -extensions v3_ca -nodes -key ./certs/ca.key -sha256 -days 365 -subj "/C=US/ST=CA/L=Netopeer/O=netopeerCA/CN=netopeerCA" -out ./certs/ca.pem'.</msg>
<msg time="2026-06-14T23:38:10.186416" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:38:10.186751" level="INFO">${stdout} = </msg>
<var>${stdout}</var>
<arg>openssl req -x509 -new -extensions v3_ca -nodes -key ./certs/ca.key -sha256 -days 365 -subj "/C=US/ST=CA/L=Netopeer/O=netopeerCA/CN=netopeerCA" -out ./certs/ca.pem</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:10.127924" elapsed="0.058919"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:10.187561" level="INFO">Executing command 'openssl genrsa -out ./certs/server.key 2048'.</msg>
<msg time="2026-06-14T23:38:10.459519" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:38:10.459959" level="INFO">${stdout} = </msg>
<var>${stdout}</var>
<arg>openssl genrsa -out ./certs/server.key 2048</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:10.187287" elapsed="0.272738"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:10.460814" level="INFO">Executing command 'openssl req -new -sha256 -key ./certs/server.key -subj "/C=US/ST=CA/L=Netopeer/O=Netopeer2/CN=netopeer2-server" -out ./certs/server.csr'.</msg>
<msg time="2026-06-14T23:38:10.518050" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:38:10.518272" level="INFO">${stdout} = </msg>
<var>${stdout}</var>
<arg>openssl req -new -sha256 -key ./certs/server.key -subj "/C=US/ST=CA/L=Netopeer/O=Netopeer2/CN=netopeer2-server" -out ./certs/server.csr</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:10.460463" elapsed="0.057864"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:10.518968" level="INFO">Executing command 'openssl x509 -req -in ./certs/server.csr -CA ./certs/ca.pem -CAkey ./certs/ca.key -CAcreateserial -extfile x509_v3.cfg -out ./certs/server.crt -days 365 -sha256'.</msg>
<msg time="2026-06-14T23:38:10.577991" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:38:10.578202" level="INFO">${stdout} = </msg>
<var>${stdout}</var>
<arg>openssl x509 -req -in ./certs/server.csr -CA ./certs/ca.pem -CAkey ./certs/ca.key -CAcreateserial -extfile x509_v3.cfg -out ./certs/server.crt -days 365 -sha256</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:10.518686" elapsed="0.059570"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:10.578876" level="INFO">Executing command 'openssl rsa -in ./certs/server.key -pubout &gt; ./certs/server.pub'.</msg>
<msg time="2026-06-14T23:38:10.638302" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:38:10.638655" level="INFO">${stdout} = </msg>
<var>${stdout}</var>
<arg>openssl rsa -in ./certs/server.key -pubout &gt; ./certs/server.pub</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:10.578602" elapsed="0.060094"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:10.639377" level="INFO">Executing command 'openssl genrsa -out ./certs/client.key 2048'.</msg>
<msg time="2026-06-14T23:38:10.816040" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:38:10.816515" level="INFO">${stdout} = </msg>
<var>${stdout}</var>
<arg>openssl genrsa -out ./certs/client.key 2048</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:10.639137" elapsed="0.177462"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:10.817577" level="INFO">Executing command 'openssl req -new -sha256 -key ./certs/client.key -subj "/C=US/ST=CA/L=Netopeer/O=Netopeer2/CN=netopeer2-client" -out ./certs/client.csr'.</msg>
<msg time="2026-06-14T23:38:10.874238" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:38:10.874546" level="INFO">${stdout} = </msg>
<var>${stdout}</var>
<arg>openssl req -new -sha256 -key ./certs/client.key -subj "/C=US/ST=CA/L=Netopeer/O=Netopeer2/CN=netopeer2-client" -out ./certs/client.csr</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:10.817163" elapsed="0.057473"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:10.875579" level="INFO">Executing command 'openssl x509 -req -in ./certs/client.csr -CA ./certs/ca.pem -CAkey ./certs/ca.key -CAcreateserial -extfile x509_v3.cfg -out ./certs/client.crt -days 1024 -sha256'.</msg>
<msg time="2026-06-14T23:38:10.934257" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:38:10.934515" level="INFO">${stdout} = </msg>
<var>${stdout}</var>
<arg>openssl x509 -req -in ./certs/client.csr -CA ./certs/ca.pem -CAkey ./certs/ca.key -CAcreateserial -extfile x509_v3.cfg -out ./certs/client.crt -days 1024 -sha256</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:10.875285" elapsed="0.059306"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:10.935253" level="INFO">Executing command 'mv ./certs ./configuration-files/certs'.</msg>
<msg time="2026-06-14T23:38:10.984189" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:38:10.984417" level="INFO">${stdout} = </msg>
<var>${stdout}</var>
<arg>mv ./certs ./configuration-files/certs</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:10.935006" elapsed="0.049467"/>
</kw>
<doc>Generates certificates for 2-way TLS authentication (ca, server, client)</doc>
<status status="PASS" start="2026-06-14T23:38:09.791713" elapsed="1.192912"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-06-14T23:38:11.032840" level="INFO">'/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/tls/ietf-keystore.xml' -&gt; '/home/jenkins/configuration-files/ietf-keystore.xml'</msg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/tls/ietf-keystore.xml</arg>
<arg>configuration-files/ietf-keystore.xml</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-06-14T23:38:10.984974" elapsed="0.047954"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-06-14T23:38:11.041474" level="INFO">'/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/tls/ietf-truststore.xml' -&gt; '/home/jenkins/configuration-files/ietf-truststore.xml'</msg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/tls/ietf-truststore.xml</arg>
<arg>configuration-files/ietf-truststore.xml</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-06-14T23:38:11.033138" elapsed="0.008431"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-06-14T23:38:11.050395" level="INFO">'/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/tls/ietf-netconf-server.xml' -&gt; '/home/jenkins/configuration-files/ietf-netconf-server.xml'</msg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/configuration-files/tls/ietf-netconf-server.xml</arg>
<arg>configuration-files/ietf-netconf-server.xml</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-06-14T23:38:11.041868" elapsed="0.008618"/>
</kw>
<doc>Upload netopeer2 configuration files needed for TLS transport</doc>
<status status="PASS" start="2026-06-14T23:38:09.790917" elapsed="1.259676"/>
</kw>
<kw name="Register keys and certificates in ODL controller" owner="NetconfCallHome">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:11.051870" level="INFO">Executing command 'cat ./configuration-files/certs/client.key'.</msg>
<msg time="2026-06-14T23:38:11.064744" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:38:11.064953" level="INFO">${pem-client-key} = -----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDRK7z1pX3iCrri
I3uhHaFCut83O33QkQugr215sydFZpefkhjKNP9W2m8mCQhPYwyDaSRyUXKCL5Uv
BkzJQghbCN7wPcSt1+fGTA150W2tLXyZ2YByGSSM0L...</msg>
<msg time="2026-06-14T23:38:11.065020" level="INFO">${stderr} = </msg>
<var>${pem-client-key}</var>
<var>${stderr}</var>
<arg>cat ./configuration-files/certs/client.key</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:11.051590" elapsed="0.013463"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-06-14T23:38:11.065504" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/variables/netconf/callhome/json/add_keystore_entry.json"&gt;/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/variables/netconf/callhome/json/add_keystore_entry.json&lt;/a&gt;'.</msg>
<msg time="2026-06-14T23:38:11.065712" level="INFO">${template} = {
    "input": {
        "key-credential": [
            {
                "key-id": "tls-device-key",
                "private-key": "{pem-client-key}",
                "passphrase": ""
            }...</msg>
<var>${template}</var>
<arg>${ADD_KEYSTORE_ENTRY_REQ}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-06-14T23:38:11.065263" elapsed="0.000521"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-06-14T23:38:11.066462" level="INFO">${body} = {
    "input": {
        "key-credential": [
            {
                "key-id": "tls-device-key",
                "private-key": "-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwg...</msg>
<var>${body}</var>
<arg>${template}</arg>
<arg>{pem-client-key}</arg>
<arg>${pem-client-key}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-06-14T23:38:11.066069" elapsed="0.000439"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:38:11.070504" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-06-14T23:38:11.272317" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-06-14T23:38:11.674651" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-06-14T23:38:11.683652" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/operations/netconf-keystore:add-keystore-entry (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${netconf_keystore_url}:add-keystore-entry</arg>
<arg>data=${body}</arg>
<arg>headers=${HEADERS}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-06-14T23:38:11.066742" elapsed="0.620406">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/operations/netconf-keystore:add-keystore-entry (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:11.687652" elapsed="0.000059"/>
</kw>
<kw name="Get certificate file content" owner="NetconfCallHome">
<var>${client-key}</var>
<arg>client.key</arg>
<doc>Get certificate or key file content</doc>
<status status="NOT RUN" start="2026-06-14T23:38:11.688120" elapsed="0.000048"/>
</kw>
<kw name="Get certificate file content" owner="NetconfCallHome">
<var>${certificate-chain}</var>
<arg>client.crt</arg>
<doc>Get certificate or key file content</doc>
<status status="NOT RUN" start="2026-06-14T23:38:11.688433" elapsed="0.000035"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<var>${template}</var>
<arg>${ADD_PRIVATE_KEY_REQ}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:11.688663" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${body}</var>
<arg>${template}</arg>
<arg>{client-key}</arg>
<arg>${client-key}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:11.688945" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${body}</var>
<arg>${body}</arg>
<arg>{certificate-chain}</arg>
<arg>${certificate-chain}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:11.689172" elapsed="0.000030"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${netconf_keystore_url}:add-private-key</arg>
<arg>data=${body}</arg>
<arg>headers=${HEADERS}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:11.689399" elapsed="0.000028"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:11.689623" elapsed="0.000027"/>
</kw>
<kw name="Get certificate file content" owner="NetconfCallHome">
<var>${ca-certificate}</var>
<arg>ca.pem</arg>
<doc>Get certificate or key file content</doc>
<status status="NOT RUN" start="2026-06-14T23:38:11.689896" elapsed="0.000033"/>
</kw>
<kw name="Get certificate file content" owner="NetconfCallHome">
<var>${device-certificate}</var>
<arg>server.crt</arg>
<doc>Get certificate or key file content</doc>
<status status="NOT RUN" start="2026-06-14T23:38:11.690172" elapsed="0.000034"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<var>${template}</var>
<arg>${ADD_TRUSTED_CERTIFICATE}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:11.690401" elapsed="0.000030"/>
</kw>
<kw name="Replace String" owner="String">
<var>${body}</var>
<arg>${template}</arg>
<arg>{ca-certificate}</arg>
<arg>${ca-certificate}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:11.690618" elapsed="0.000035"/>
</kw>
<kw name="Replace String" owner="String">
<var>${body}</var>
<arg>${body}</arg>
<arg>{device-certificate}</arg>
<arg>${device-certificate}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:11.690934" elapsed="0.000043"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${netconf_keystore_url}:add-trusted-certificate</arg>
<arg>data=${body}</arg>
<arg>headers=${HEADERS}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:11.691204" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:11.691488" elapsed="0.000029"/>
</kw>
<doc>Register pre-configured netopeer2 certificates and key in ODL-netconf keystore</doc>
<status status="FAIL" start="2026-06-14T23:38:11.051104" elapsed="0.640575">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/operations/netconf-keystore:add-keystore-entry (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Register TLS call-home device in ODL controller" owner="NetconfCallHome">
<arg>netopeer2</arg>
<arg>tls-device-key</arg>
<arg>tls-device-certificate</arg>
<doc>Registration call-home device with TLS transport</doc>
<status status="NOT RUN" start="2026-06-14T23:38:11.692003" elapsed="0.000036"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker-compose up -d</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:11.692252" elapsed="0.000033"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>90s</arg>
<arg>2s</arg>
<arg>NetconfCallHome.Check Device Status</arg>
<arg>CONNECTED</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:11.692531" elapsed="0.000028"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>30s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${mount_point_url}</arg>
<arg>${netconf_mount_expected_values}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-06-14T23:38:11.692786" elapsed="0.000030"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:11.694404" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-06-14T23:38:11.991554" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-06-14T23:38:11.991998" level="INFO">${stdout} = </msg>
<msg time="2026-06-14T23:38:11.992105" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-06-14T23:38:11.992197" level="INFO">${rc} = 1</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker-compose logs</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:11.694099" elapsed="0.298151"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T23:38:11.993567" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T23:38:11.992746" elapsed="0.000918"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:11.994507" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-06-14T23:38:12.301218" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-06-14T23:38:12.301629" level="INFO">${stdout} = </msg>
<msg time="2026-06-14T23:38:12.301724" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-06-14T23:38:12.302022" level="INFO">${rc} = 1</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker-compose down</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:11.994081" elapsed="0.307998"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:12.303027" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-06-14T23:38:12.372742" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:38:12.373196" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-06-14T23:38:12.373298" level="INFO">${stderr} = </msg>
<msg time="2026-06-14T23:38:12.373386" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker ps -a</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:12.302549" elapsed="0.070890"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:12.374216" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-06-14T23:38:12.420100" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ./configuration-files</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:12.373937" elapsed="0.046340"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:38:12.425574" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:12.627449" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:13.030347" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:13.033287" level="INFO">${resp} = None</msg>
<msg time="2026-06-14T23:38:13.033422" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${whitelist}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-06-14T23:38:12.420654" elapsed="0.617996">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-06-14T23:38:13.042024" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:13.243347" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:13.645687" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:13.648912" level="INFO">${resp} = None</msg>
<msg time="2026-06-14T23:38:13.649046" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${netconf_keystore_data_url}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-06-14T23:38:13.039213" elapsed="0.615316">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Tears down the docker running netopeer and deletes entry from the whitelist.</doc>
<status status="FAIL" start="2026-06-14T23:38:11.693591" elapsed="1.961374">Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Using correct certificate and key pair should result to successful mount. CONNECTED should be the device status.</doc>
<status status="FAIL" start="2026-06-14T23:38:09.363125" elapsed="4.292013">ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/operations/netconf-keystore:add-keystore-entry (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.171.92', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<kw name="Suite Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Uninstall Docker Compose on tools system" owner="NetconfCallHome">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T23:38:13.656951" level="INFO">Executing command 'pip uninstall docker-compose'.</msg>
<msg time="2026-06-14T23:38:14.401942" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T23:38:14.402366" level="INFO">${stdout} = </msg>
<msg time="2026-06-14T23:38:14.402468" level="INFO">${stderr} = WARNING: Skipping docker-compose as it is not installed.</msg>
<msg time="2026-06-14T23:38:14.402564" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>pip uninstall docker-compose</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T23:38:13.656724" elapsed="0.745892"/>
</kw>
<doc>Uninstall docker-compose on tools system</doc>
<status status="PASS" start="2026-06-14T23:38:13.656513" elapsed="0.746358"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-06-14T23:38:14.403505" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-06-14T23:38:14.403244" elapsed="0.000737"/>
</kw>
<kw name="Close All Connections" owner="SSHLibrary">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-06-14T23:38:14.404285" elapsed="0.000678"/>
</kw>
<doc>Tearing down the setup.</doc>
<status status="PASS" start="2026-06-14T23:38:13.656179" elapsed="0.748919"/>
</kw>
<doc>Test suite to verify callhome functionality over SSH transport protocol. Registration in OpenDaylight
Controller happens via restconf interface. Netopeer2-server docker container plays a role of the
netconf device with call-home feature. Docker-compose file is used to configure netopeer2 docker
container(netconf configuration templates, host-key).</doc>
<status status="FAIL" start="2026-06-14T23:37:41.604124" elapsed="32.801053"/>
</suite>
<status status="FAIL" start="2026-06-14T23:37:41.564294" elapsed="32.843440"/>
</suite>
<statistics>
<total>
<stat pass="0" fail="7" skip="0">All Tests</stat>
</total>
<tag>
</tag>
<suite>
<stat name="netconf-gate-callhome.txt" id="s1" pass="0" fail="7" skip="0">netconf-gate-callhome.txt</stat>
<stat name="Callhome" id="s1-s1" pass="0" fail="7" skip="0">netconf-gate-callhome.txt.Callhome</stat>
</suite>
</statistics>
<errors>
<msg time="2026-06-14T23:37:52.348057" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:52.550049" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:52.953076" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:53.649743" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:53.852695" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:54.255652" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:54.278879" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:37:54.480716" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:37:54.883592" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:37:55.265349" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:55.466740" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:55.868906" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:56.596530" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:56.798244" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:57.200825" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:57.213317" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:37:57.414885" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:37:57.817033" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:37:58.054880" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials</msg>
<msg time="2026-06-14T23:37:58.256218" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials</msg>
<msg time="2026-06-14T23:37:58.658289" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials</msg>
<msg time="2026-06-14T23:37:59.354458" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:59.556410" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:59.958545" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:37:59.971198" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:00.172753" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:00.575345" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:01.087450" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials</msg>
<msg time="2026-06-14T23:38:01.288830" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials</msg>
<msg time="2026-06-14T23:38:01.690830" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials</msg>
<msg time="2026-06-14T23:38:02.412897" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:02.614870" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:03.017387" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:03.028957" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:03.230301" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:03.632675" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:03.916948" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:04.118598" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:04.521228" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:05.237895" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:05.439559" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:05.841622" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:05.852827" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:06.054353" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:06.456714" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:06.802057" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:07.003491" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:07.405739" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:08.133512" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:08.335037" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:08.737869" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:08.749796" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:08.951458" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:09.353628" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:11.070504" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-06-14T23:38:11.272317" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-06-14T23:38:11.674651" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-06-14T23:38:12.425574" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:12.627449" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:13.030347" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices</msg>
<msg time="2026-06-14T23:38:13.042024" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:13.243347" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-06-14T23:38:13.645687" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.92', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
</errors>
</robot>
