<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.5 (Python 3.11.10 on linux)" generated="2026-10-11T01:45:23.081186" 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-10-11T01:45:23.522406" 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-10-11T01:45:23.521923" elapsed="0.000535"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-11T01:45:23.524658" level="INFO">Length is 0.</msg>
<msg time="2026-10-11T01:45:23.524744" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-11T01:45:23.524108" elapsed="0.000663"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-11T01:45:23.524912" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-11T01:45:23.526105" level="INFO">Logging into '10.30.171.216:22' as 'jenkins'.</msg>
<msg time="2026-10-11T01:45:24.012195" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-198-generic x86_64)

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

 System information as of Sun Oct 11 01:44:39 UTC 2026

  System load:  0.12               Processes:             108
  Usage of /:   20.7% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.216
  Swap usage:   0%

 * Canonical Workshop gives developers fast, composable, reproducible, and
   secure developer environments that are perfect for agentic workflows.

   https://ubuntu.com/workshop

Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


[?2004h[jenkins@releng-00473-61-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-10-11T01:45:23.525829" elapsed="0.486485"/>
</kw>
<msg time="2026-10-11T01:45:24.012404" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-11T01:45:23.525457" elapsed="0.487053"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-11T01:45:23.523689" elapsed="0.488965"/>
</kw>
<msg time="2026-10-11T01:45:24.012725" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-11T01:45:23.523181" elapsed="0.489611"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-10-11T01:45:23.522656" elapsed="0.490240"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-10-11T01:45:24.012982" elapsed="0.000058"/>
</return>
<msg time="2026-10-11T01:45:24.013210" 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-10-11T01:45:23.521492" elapsed="0.491753"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-11T01:45:24.013997" level="INFO">${netopeer_conn_id} = 1</msg>
<arg>${netopeer_conn_id}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-11T01:45:24.013491" elapsed="0.000565"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-11T01:45:24.017725" 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-10-11T01:45:24.014248" elapsed="0.003562"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-10-11T01:45:24.483144" 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  18.2M      0 --:--:-- --:--:-- --:--:-- 18.2M
[?2004h[jenkins@releng-00473-61-1-docker-0 ~]&gt;</msg>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-10-11T01:45:24.019287" elapsed="0.464007"/>
</kw>
<msg time="2026-10-11T01:45:24.483415" 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-10-11T01:45:24.018641" elapsed="0.464802"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:24.483850" level="INFO">Executing command 'sudo chmod +x /usr/local/bin/docker-compose'.</msg>
<msg time="2026-10-11T01:45:24.506699" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:24.506824" level="INFO">${stdout} = </msg>
<msg time="2026-10-11T01:45:24.506864" level="INFO">${stderr} = </msg>
<msg time="2026-10-11T01:45:24.506903" 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-10-11T01:45:24.483653" elapsed="0.023287"/>
</kw>
<doc>Install docker-compose on tools system.</doc>
<status status="PASS" start="2026-10-11T01:45:23.520161" elapsed="0.986907"/>
</kw>
<kw name="Pull Netopeer2 Docker Image" owner="NetconfCallHome">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:24.507668" level="INFO">Executing command 'docker pull sysrepo/sysrepo-netopeer2:latest'.</msg>
<msg time="2026-10-11T01:45:32.471809" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:32.472251" level="INFO">${stdout} = latest: Pulling from sysrepo/sysrepo-netopeer2
d51af753c3d3: Pulling fs layer
399fb1102f3f: Pulling fs layer
3d97b7f99a05: Pulling fs layer
fc878cd0a91c: Pulling fs layer
6154df8ff988: Pulling fs laye...</msg>
<msg time="2026-10-11T01:45:32.472348" level="INFO">${stderr} = </msg>
<msg time="2026-10-11T01:45:32.472431" 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-10-11T01:45:24.507494" elapsed="7.964985"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:32.473556" level="INFO">Executing command 'docker images'.</msg>
<msg time="2026-10-11T01:45:32.584933" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:32.585191" level="INFO">${stdout} = IMAGE                              ID             DISK USAGE   CONTENT SIZE   EXTRA
sysrepo/sysrepo-netopeer2:latest   36cc1d841c97        914MB          232MB        </msg>
<msg time="2026-10-11T01:45:32.585287" level="INFO">${stderr} = </msg>
<msg time="2026-10-11T01:45:32.585371" 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-10-11T01:45:32.473080" elapsed="0.112341"/>
</kw>
<doc>Pulls the netopeer image from the docker repository.</doc>
<status status="PASS" start="2026-10-11T01:45:24.507244" elapsed="8.078344"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-10-11T01:45:32.626486" level="INFO">[chan 4] Opened sftp connection (server version 3)</msg>
<msg time="2026-10-11T01:45:32.638315" 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-10-11T01:45:32.586018" elapsed="0.052433"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-10-11T01:45:32.648190" 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-10-11T01:45:32.638885" elapsed="0.009429"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:32.649034" level="INFO">Executing command 'sed -i -e 's/ODL_SYSTEM_IP/10.30.170.238/g' docker-compose.yaml'.</msg>
<msg time="2026-10-11T01:45:32.661766" 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-10-11T01:45:32.648734" elapsed="0.013159"/>
</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-10-11T01:45:32.674825" elapsed="0.000889"/>
</kw>
<msg time="2026-10-11T01:45:32.675845" 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-10-11T01:45:32.674003" elapsed="0.001969"/>
</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-10-11T01:45:32.673286" elapsed="0.002839"/>
</kw>
<msg time="2026-10-11T01:45:32.676210" 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-10-11T01:45:32.667580" elapsed="0.008742"/>
</kw>
<msg time="2026-10-11T01:45:32.676538" 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-10-11T01:45:32.666999" elapsed="0.009590"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:32.677275" level="INFO">Executing command 'sed -i -e 's/NETCONF_CH_SSH/4334/g' docker-compose.yaml'.</msg>
<msg time="2026-10-11T01:45:32.711904" 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-10-11T01:45:32.677027" elapsed="0.035000"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:32.712605" level="INFO">Executing command 'sed -i -e 's/NETCONF_CH_TLS/4335/g' docker-compose.yaml'.</msg>
<msg time="2026-10-11T01:45:32.759925" 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-10-11T01:45:32.712409" elapsed="0.047640"/>
</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-10-11T01:45:32.772850" elapsed="0.000752"/>
</kw>
<msg time="2026-10-11T01:45:32.773780" 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-10-11T01:45:32.772050" elapsed="0.001838"/>
</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-10-11T01:45:32.771392" elapsed="0.002744"/>
</kw>
<msg time="2026-10-11T01:45:32.774228" 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-10-11T01:45:32.765683" elapsed="0.008637"/>
</kw>
<msg time="2026-10-11T01:45:32.774525" 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-10-11T01:45:32.765125" elapsed="0.009450"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-11T01:45:32.775521" 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 variable.</doc>
<status status="PASS" start="2026-10-11T01:45:32.774969" elapsed="0.000605"/>
</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-10-11T01:45:32.788777" elapsed="0.000748"/>
</kw>
<msg time="2026-10-11T01:45:32.789661" 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-10-11T01:45:32.787988" elapsed="0.001807"/>
</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-10-11T01:45:32.787345" elapsed="0.002606"/>
</kw>
<msg time="2026-10-11T01:45:32.790036" 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-10-11T01:45:32.781831" elapsed="0.008293"/>
</kw>
<msg time="2026-10-11T01:45:32.790330" 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-10-11T01:45:32.781257" elapsed="0.009123"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-11T01:45:32.791400" 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>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-11T01:45:32.790714" elapsed="0.000741"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-11T01:45:32.792539" level="INFO">${netconf_mount_expected_values} = ['"connection-status":"connected"', '"node-id":"netopeer2"', '"available-capabilities"']</msg>
<arg>${netconf_mount_expected_values}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-11T01:45:32.791897" elapsed="0.000757"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-11T01:45:32.795440" 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 the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-11T01:45:32.793045" elapsed="0.002487"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-11T01:45:32.798775" 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 the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-11T01:45:32.795964" elapsed="0.002904"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-11T01:45:32.801559" 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 the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-11T01:45:32.799251" elapsed="0.002384"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-11T01:45:32.803728" 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 the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-11T01:45:32.801891" elapsed="0.001916"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-11T01:45:32.805736" 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 the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-11T01:45:32.804047" elapsed="0.001762"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-11T01:45:32.807900" 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 the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-11T01:45:32.806046" elapsed="0.001912"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-11T01:45:32.809944" 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 the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-11T01:45:32.808237" elapsed="0.001765"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:32.810352" level="INFO">Executing command 'ssh-keygen -q -t rsa -b 2048 -N '' -m pem -f ./incorrect_ssh_host_rsa_key'.</msg>
<msg time="2026-10-11T01:45:32.995236" 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-10-11T01:45:32.810232" elapsed="0.185145"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:32.996122" level="INFO">Executing command 'awk '{print $2}' incorrect_ssh_host_rsa_key.pub'.</msg>
<msg time="2026-10-11T01:45:33.044323" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:33.044548" level="INFO">${incorrect_public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQC0hUCgd9NyhDfGXOQFIVrMhWZ9mOB4LjdBnvE/mcPmOym9WJES2+uJLWrfO9+BjrIt0gwSpYEk3tZSInWlr3tf2qdGVHpH0X/BaGrsFC/3sxTfKZSBMPM+w9F/QtTQMaqBfBt6iE/rEJzpyQvcL2xVUoOOOaqlGeIWtLOdI2Ql...</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-10-11T01:45:32.995894" elapsed="0.048711"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-11T01:45:33.048358" level="INFO">${INCORRECT_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQC0hUCgd9NyhDfGXOQFIVrMhWZ9mOB4LjdBnvE/mcPmOym9WJES2+uJLWrfO9+BjrIt0gwSpYEk3tZSInWlr3tf2qdGVHpH0X/BaGrsFC/3sxTfKZSBMPM+w9F/QtTQMaqBfBt6iE/rEJzpyQvcL2xVUoOOOaqlGeIWtLOdI2Ql...</msg>
<arg>${INCORRECT_PUB_KEY}</arg>
<arg>${incorrect_public_key}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-11T01:45:33.045099" elapsed="0.003359"/>
</kw>
<doc>Get the suite ready for callhome test cases.</doc>
<status status="PASS" start="2026-10-11T01:45:23.519825" elapsed="9.528761"/>
</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-10-11T01:45:33.051250" level="INFO">Creating Session using : alias=session, url=http://10.30.170.238:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7280ed88c750&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-11T01:45:33.050792" elapsed="0.000883"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:33.052292" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-10-11T01:45:33.096214" 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-10-11T01:45:33.052098" elapsed="0.044245"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:33.097005" 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-10-11T01:45:33.543807" 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-10-11T01:45:33.096789" elapsed="0.447160"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:33.544573" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-10-11T01:45:33.592154" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:33.592375" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCqRBxZa7p8KS0wGzsTUaXovWadQaHKAQe1+AqVbjawFWSCIufNYhmDh7QPtIxRiSkHDllMAHm1JUtc/Ax0wbpU9gOtO8F6w/BkqnSY8EWvcRCeW2qWFctae/8OHF4yspL9vfOJBr0vdW5wpZ/oegTOymRrGBIJJhMM2PC8MQbM...</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-10-11T01:45:33.544354" elapsed="0.048078"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-10-11T01:45:33.596041" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCqRBxZa7p8KS0wGzsTUaXovWadQaHKAQe1+AqVbjawFWSCIufNYhmDh7QPtIxRiSkHDllMAHm1JUtc/Ax0wbpU9gOtO8F6w/BkqnSY8EWvcRCeW2qWFctae/8OHF4yspL9vfOJBr0vdW5wpZ/oegTOymRrGBIJJhMM2PC8MQbM...</msg>
<arg>${NETOPEER_PUB_KEY}</arg>
<arg>${public_key}</arg>
<doc>Makes the variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-10-11T01:45:33.592885" elapsed="0.003253"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-10-11T01:45:33.050121" elapsed="0.546144"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-10-11T01:45:33.638657" 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-10-11T01:45:33.597295" elapsed="0.041527"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-10-11T01:45:33.649255" 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-10-11T01:45:33.639189" elapsed="0.010191"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-10-11T01:45:33.596607" elapsed="0.052899"/>
</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-10-11T01:45:33.651585" elapsed="0.000093"/>
</kw>
<status status="NOT RUN" start="2026-10-11T01:45:33.650880" elapsed="0.000876"/>
</branch>
<branch type="ELSE">
<kw name="Get create device request template" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-11T01:45:33.653050" 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-10-11T01:45:33.653343" 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-10-11T01:45:33.652760" elapsed="0.000639"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-10-11T01:45:33.654484" level="INFO">${template} = {
    "device": {
        "unique-id": "{device_name}",
        "ssh-client-params": {
          "credentials": {
              "username": "{username}",
              "passwords": [ "{password}" ]
  ...</msg>
<arg>${template}</arg>
<doc>Makes the variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-10-11T01:45:33.653820" elapsed="0.000751"/>
</kw>
<status status="PASS" start="2026-10-11T01:45:33.652116" elapsed="0.002643"/>
</kw>
<status status="PASS" start="2026-10-11T01:45:33.651821" elapsed="0.002988"/>
</branch>
<status status="PASS" start="2026-10-11T01:45:33.650815" elapsed="0.004045"/>
</if>
<kw name="Replace String" owner="String">
<msg time="2026-10-11T01:45:33.655661" 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-10-11T01:45:33.655175" elapsed="0.000545"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-10-11T01:45:33.656492" 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-10-11T01:45:33.656072" elapsed="0.000474"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-10-11T01:45:33.657818" 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-10-11T01:45:33.656922" elapsed="0.000959"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-10-11T01:45:33.658659" 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-10-11T01:45:33.658214" elapsed="0.000502"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-10-11T01:45:33.665945" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:33.867785" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:34.269611" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:34.271849" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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-10-11T01:45:33.659034" elapsed="0.623882">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T01:45:34.283431" elapsed="0.000056"/>
</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-10-11T01:45:33.650098" elapsed="0.633670">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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-10-11T01:45:34.284208" 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>CONNECTED</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-11T01:45:34.284682" elapsed="0.000060"/>
</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-10-11T01:45:34.285107" elapsed="0.000040"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:34.287189" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-10-11T01:45:34.614817" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-11T01:45:34.615087" level="INFO">${stdout} = </msg>
<msg time="2026-10-11T01:45:34.615178" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.40, please upgrade your client to a newer version</msg>
<msg time="2026-10-11T01:45:34.615261" 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-10-11T01:45:34.286802" elapsed="0.328506"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-11T01:45:34.616459" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-11T01:45:34.615852" elapsed="0.000699"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:34.617350" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-10-11T01:45:34.962470" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-11T01:45:34.962786" level="INFO">${stdout} = </msg>
<msg time="2026-10-11T01:45:34.962878" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.40, please upgrade your client to a newer version</msg>
<msg time="2026-10-11T01:45:34.962965" 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-10-11T01:45:34.616997" elapsed="0.346015"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:34.963850" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-10-11T01:45:35.042211" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:35.042459" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-10-11T01:45:35.042551" level="INFO">${stderr} = </msg>
<msg time="2026-10-11T01:45:35.042677" 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-10-11T01:45:34.963430" elapsed="0.079336"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:35.043412" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-10-11T01:45:35.091868" 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-10-11T01:45:35.043206" elapsed="0.048796"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-10-11T01:45:35.097421" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:35.299480" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:35.701557" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:35.703812" level="INFO">${resp} = None</msg>
<msg time="2026-10-11T01:45:35.703939" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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-10-11T01:45:35.092316" elapsed="0.617049">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-10-11T01:45:35.714164" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:35.916167" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:36.318249" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:36.320418" level="INFO">${resp} = None</msg>
<msg time="2026-10-11T01:45:36.320524" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:35.709853" elapsed="0.616064">ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:34.285956" elapsed="2.040312">Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:33.048773" elapsed="3.277738">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:36.330008" level="INFO">Creating Session using : alias=session, url=http://10.30.170.238:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7280ebc5a1d0&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-11T01:45:36.329335" elapsed="0.001083"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:36.331138" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-10-11T01:45:36.345141" 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-10-11T01:45:36.330922" elapsed="0.014348"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:36.345935" 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-10-11T01:45:36.679522" 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-10-11T01:45:36.345723" elapsed="0.334007"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:36.680358" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-10-11T01:45:36.732293" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:36.732509" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCrEEAYvjTzPHjbrvVdM1Tj9yUN/n7Fkv53qAIMslQ1h4owCFmATiQq+duwndAH0ha/pCc3YHX5rN9PU05y9QWUAquZRJhDADSX1zhuveJ6vCQ9sIW8i8ZTLKH7iLY8N9B0Sw8TjLA3WmdgK6SKzxD6MjBLFFgfI/Jp3imWj5mc...</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-10-11T01:45:36.680141" elapsed="0.052424"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-10-11T01:45:36.736296" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCrEEAYvjTzPHjbrvVdM1Tj9yUN/n7Fkv53qAIMslQ1h4owCFmATiQq+duwndAH0ha/pCc3YHX5rN9PU05y9QWUAquZRJhDADSX1zhuveJ6vCQ9sIW8i8ZTLKH7iLY8N9B0Sw8TjLA3WmdgK6SKzxD6MjBLFFgfI/Jp3imWj5mc...</msg>
<arg>${NETOPEER_PUB_KEY}</arg>
<arg>${public_key}</arg>
<doc>Makes the variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-10-11T01:45:36.733041" elapsed="0.003352"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-10-11T01:45:36.328441" elapsed="0.408075"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-10-11T01:45:36.778687" 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-10-11T01:45:36.737565" elapsed="0.041279"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-10-11T01:45:36.789715" 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-10-11T01:45:36.779322" elapsed="0.010522"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-10-11T01:45:36.736928" elapsed="0.053041"/>
</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-10-11T01:45:36.791899" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-10-11T01:45:36.791227" elapsed="0.000778"/>
</branch>
<branch type="ELSE">
<kw name="Get create device request template" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-11T01:45:36.793283" 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-10-11T01:45:36.793557" 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-10-11T01:45:36.793006" elapsed="0.000607"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-10-11T01:45:36.794821" level="INFO">${template} = {
    "device": {
        "unique-id": "{device_name}",
        "ssh-client-params": {
          "credentials": {
              "username": "{username}",
              "passwords": [ "{password}" ]
  ...</msg>
<arg>${template}</arg>
<doc>Makes the variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-10-11T01:45:36.794120" elapsed="0.000792"/>
</kw>
<status status="PASS" start="2026-10-11T01:45:36.792358" elapsed="0.002663"/>
</kw>
<status status="PASS" start="2026-10-11T01:45:36.792065" elapsed="0.003003"/>
</branch>
<status status="PASS" start="2026-10-11T01:45:36.791173" elapsed="0.003942"/>
</if>
<kw name="Replace String" owner="String">
<msg time="2026-10-11T01:45:36.796125" 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-10-11T01:45:36.795429" elapsed="0.000755"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-10-11T01:45:36.796977" 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-10-11T01:45:36.796518" elapsed="0.000514"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-10-11T01:45:36.797809" 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-10-11T01:45:36.797359" elapsed="0.000506"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-10-11T01:45:36.798600" 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-10-11T01:45:36.798188" elapsed="0.000551"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-10-11T01:45:36.803607" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:37.005391" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:37.407304" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:37.409488" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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-10-11T01:45:36.799043" elapsed="0.615693">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T01:45:37.415238" elapsed="0.000057"/>
</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-10-11T01:45:36.790471" elapsed="0.625042">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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-10-11T01:45:37.416008" elapsed="0.000045"/>
</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-10-11T01:45:37.416444" elapsed="0.000040"/>
</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-10-11T01:45:37.416911" elapsed="0.000043"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:37.418915" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-10-11T01:45:37.726082" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-11T01:45:37.726339" level="INFO">${stdout} = </msg>
<msg time="2026-10-11T01:45:37.726426" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.40, please upgrade your client to a newer version</msg>
<msg time="2026-10-11T01:45:37.726507" 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-10-11T01:45:37.418477" elapsed="0.308074"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-11T01:45:37.727883" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-11T01:45:37.727216" elapsed="0.000758"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:37.728784" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-10-11T01:45:38.048456" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-11T01:45:38.048778" level="INFO">${stdout} = </msg>
<msg time="2026-10-11T01:45:38.048872" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.40, please upgrade your client to a newer version</msg>
<msg time="2026-10-11T01:45:38.048952" 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-10-11T01:45:37.728391" elapsed="0.320607"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:38.049799" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-10-11T01:45:38.119480" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:38.119784" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-10-11T01:45:38.119876" level="INFO">${stderr} = </msg>
<msg time="2026-10-11T01:45:38.119955" 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-10-11T01:45:38.049407" elapsed="0.070593"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:38.120596" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-10-11T01:45:38.167197" 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-10-11T01:45:38.120402" elapsed="0.046919"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-10-11T01:45:38.172123" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:38.373979" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:38.775972" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:38.777984" level="INFO">${resp} = None</msg>
<msg time="2026-10-11T01:45:38.778084" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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-10-11T01:45:38.167686" elapsed="0.615378">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-10-11T01:45:38.787460" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:38.989264" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:39.391213" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:39.393120" level="INFO">${resp} = None</msg>
<msg time="2026-10-11T01:45:39.393217" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:38.783490" elapsed="0.614577">ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:37.417683" elapsed="1.980695">Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:36.327134" elapsed="3.071383">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:39.401609" level="INFO">Creating Session using : alias=session, url=http://10.30.170.238:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7280eab7d0d0&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-11T01:45:39.401154" elapsed="0.001082"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:39.402866" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-10-11T01:45:39.416436" 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-10-11T01:45:39.402660" elapsed="0.013898"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:39.417186" 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-10-11T01:45:39.588955" 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-10-11T01:45:39.416990" elapsed="0.172096"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:39.589750" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-10-11T01:45:39.643977" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:39.644186" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCsURMDic84FXD4QLsM9bFm5rennSx5v+A6MZAKJBEoaW7Xxnrp+hIy8M5iXwLxZG6MRwRSwXX+EB0/eeRN7J8K/ol13/TcAkvvn8gJoPnias3ZLr107mfjLce9SMtrff8sefNUkdzzsmc0Ks7MUh4lXY9F/Img0ACnpf+be7Y3...</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-10-11T01:45:39.589478" elapsed="0.054764"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-10-11T01:45:39.647947" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCsURMDic84FXD4QLsM9bFm5rennSx5v+A6MZAKJBEoaW7Xxnrp+hIy8M5iXwLxZG6MRwRSwXX+EB0/eeRN7J8K/ol13/TcAkvvn8gJoPnias3ZLr107mfjLce9SMtrff8sefNUkdzzsmc0Ks7MUh4lXY9F/Img0ACnpf+be7Y3...</msg>
<arg>${NETOPEER_PUB_KEY}</arg>
<arg>${public_key}</arg>
<doc>Makes the variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-10-11T01:45:39.644686" elapsed="0.003359"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-10-11T01:45:39.400357" elapsed="0.247811"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-10-11T01:45:39.692830" 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-10-11T01:45:39.649389" elapsed="0.043584"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-10-11T01:45:39.703696" 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-10-11T01:45:39.693326" elapsed="0.010493"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-10-11T01:45:39.648493" elapsed="0.055450"/>
</kw>
<kw name="Register global credentials for SSH call-home devices" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-11T01:45:39.705290" 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-10-11T01:45:39.705567" 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-10-11T01:45:39.705022" elapsed="0.000651"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-10-11T01:45:39.706441" 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-10-11T01:45:39.706017" elapsed="0.000478"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-10-11T01:45:39.707305" 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-10-11T01:45:39.706899" elapsed="0.000459"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-11T01:45:39.712312" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:39.914332" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:40.316333" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:40.318313" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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-10-11T01:45:39.707689" elapsed="0.615574">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T01:45:40.323735" elapsed="0.000051"/>
</kw>
<arg>root</arg>
<arg>root</arg>
<doc>Set global credentials for SSH call-home devices</doc>
<status status="FAIL" start="2026-10-11T01:45:39.704291" elapsed="0.619697">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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-10-11T01:45:40.324510" elapsed="0.000052"/>
</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-10-11T01:45:40.325054" elapsed="0.000044"/>
</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-10-11T01:45:40.325492" elapsed="0.000042"/>
</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-10-11T01:45:40.325944" elapsed="0.000041"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:40.328139" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-10-11T01:45:40.635201" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-11T01:45:40.635446" level="INFO">${stdout} = </msg>
<msg time="2026-10-11T01:45:40.635537" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.40, please upgrade your client to a newer version</msg>
<msg time="2026-10-11T01:45:40.635680" 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-10-11T01:45:40.327367" elapsed="0.308366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-11T01:45:40.636756" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-11T01:45:40.636167" elapsed="0.000679"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:40.637537" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-10-11T01:45:40.981719" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-11T01:45:40.981962" level="INFO">${stdout} = </msg>
<msg time="2026-10-11T01:45:40.982051" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.40, please upgrade your client to a newer version</msg>
<msg time="2026-10-11T01:45:40.982135" 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-10-11T01:45:40.637212" elapsed="0.344970"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:40.983025" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-10-11T01:45:41.066053" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:41.066295" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-10-11T01:45:41.066386" level="INFO">${stderr} = </msg>
<msg time="2026-10-11T01:45:41.066467" 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-10-11T01:45:40.982667" elapsed="0.083846"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:41.067204" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-10-11T01:45:41.115738" 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-10-11T01:45:41.067001" elapsed="0.048868"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-10-11T01:45:41.120425" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:41.322389" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:41.724373" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:41.726466" level="INFO">${resp} = None</msg>
<msg time="2026-10-11T01:45:41.726597" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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-10-11T01:45:41.116169" elapsed="0.615556">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-10-11T01:45:41.736243" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:41.938097" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:42.339879" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:42.341886" level="INFO">${resp} = None</msg>
<msg time="2026-10-11T01:45:42.342013" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:41.732207" elapsed="0.614824">ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:40.326559" elapsed="2.020788">Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:39.399124" elapsed="2.948365">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:42.354147" level="INFO">Creating Session using : alias=session, url=http://10.30.170.238:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7280eab8e910&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-11T01:45:42.353426" elapsed="0.001022"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:42.355080" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-10-11T01:45:42.368510" 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-10-11T01:45:42.354875" elapsed="0.013828"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:42.369271" 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-10-11T01:45:42.551185" 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-10-11T01:45:42.369076" elapsed="0.182242"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:42.551972" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-10-11T01:45:42.603917" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:42.604133" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDDWrObX5GQNM6TfmLyzNrzx77jwVoUmqcv1hZvPsrUuGCOzv74L6Kgmhs+vNrrDk5G6PVWZeeZcV6IrVH7rDKFdU59PMZaMVBUuDF0lhQ/yd2/1/XosqM/Ksxr64DMLs/cvyqlCPiPrUy1SDK0wWty7Fll8SLAOD5ic2T/nVCw...</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-10-11T01:45:42.551760" elapsed="0.052430"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-10-11T01:45:42.607826" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDDWrObX5GQNM6TfmLyzNrzx77jwVoUmqcv1hZvPsrUuGCOzv74L6Kgmhs+vNrrDk5G6PVWZeeZcV6IrVH7rDKFdU59PMZaMVBUuDF0lhQ/yd2/1/XosqM/Ksxr64DMLs/cvyqlCPiPrUy1SDK0wWty7Fll8SLAOD5ic2T/nVCw...</msg>
<arg>${NETOPEER_PUB_KEY}</arg>
<arg>${public_key}</arg>
<doc>Makes the variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-10-11T01:45:42.604586" elapsed="0.003362"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-10-11T01:45:42.349322" elapsed="0.258780"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-10-11T01:45:42.652502" 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-10-11T01:45:42.609152" elapsed="0.043540"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-10-11T01:45:42.662463" 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-10-11T01:45:42.653121" elapsed="0.009487"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-10-11T01:45:42.608450" elapsed="0.054318"/>
</kw>
<kw name="Register global credentials for SSH call-home devices" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-11T01:45:42.664145" 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-10-11T01:45:42.664409" 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-10-11T01:45:42.663880" elapsed="0.000582"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-10-11T01:45:42.665265" 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-10-11T01:45:42.664839" elapsed="0.000481"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-10-11T01:45:42.666109" 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-10-11T01:45:42.665706" elapsed="0.000457"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-11T01:45:42.670880" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:42.872383" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:43.274140" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:43.275996" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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-10-11T01:45:42.666452" elapsed="0.614769">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T01:45:43.281737" elapsed="0.000053"/>
</kw>
<arg>root</arg>
<arg>incorrect</arg>
<doc>Set global credentials for SSH call-home devices</doc>
<status status="FAIL" start="2026-10-11T01:45:42.663113" elapsed="0.618882">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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-10-11T01:45:43.282523" elapsed="0.000090"/>
</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-10-11T01:45:43.283040" elapsed="0.000043"/>
</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-10-11T01:45:43.283463" elapsed="0.000041"/>
</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-10-11T01:45:43.283951" elapsed="0.000042"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:43.285855" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-10-11T01:45:43.602581" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-11T01:45:43.602893" level="INFO">${stdout} = </msg>
<msg time="2026-10-11T01:45:43.602983" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.40, please upgrade your client to a newer version</msg>
<msg time="2026-10-11T01:45:43.603068" 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-10-11T01:45:43.285420" elapsed="0.317693"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-11T01:45:43.604797" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-11T01:45:43.603695" elapsed="0.001194"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:43.605662" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-10-11T01:45:43.945721" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-11T01:45:43.945963" level="INFO">${stdout} = </msg>
<msg time="2026-10-11T01:45:43.946053" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.40, please upgrade your client to a newer version</msg>
<msg time="2026-10-11T01:45:43.946136" 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-10-11T01:45:43.605263" elapsed="0.340920"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:43.946992" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-10-11T01:45:44.029952" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:44.030192" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-10-11T01:45:44.030284" level="INFO">${stderr} = </msg>
<msg time="2026-10-11T01:45:44.030367" 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-10-11T01:45:43.946641" elapsed="0.083772"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:44.031107" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-10-11T01:45:44.083957" 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-10-11T01:45:44.030899" elapsed="0.053190"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-10-11T01:45:44.088576" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:44.290359" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:44.692236" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:44.694845" level="INFO">${resp} = None</msg>
<msg time="2026-10-11T01:45:44.694946" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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-10-11T01:45:44.084396" elapsed="0.615552">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-10-11T01:45:44.704221" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:44.906306" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:45.308134" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:45.309962" level="INFO">${resp} = None</msg>
<msg time="2026-10-11T01:45:45.310059" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:44.700301" elapsed="0.614611">ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:43.284601" elapsed="2.030619">Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:42.348055" elapsed="2.967305">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:45.318425" level="INFO">Creating Session using : alias=session, url=http://10.30.170.238:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7280eab6c6d0&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-11T01:45:45.317970" elapsed="0.000828"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:45.319377" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-10-11T01:45:45.333221" 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-10-11T01:45:45.319180" elapsed="0.014165"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:45.333982" 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-10-11T01:45:45.499189" 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-10-11T01:45:45.333782" elapsed="0.165566"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:45.500024" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-10-11T01:45:45.555846" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:45.556099" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCmAbT01kDJAGkZ0A86PLQmmTl6JgHWRPlmU6gzaHNlXzIiPcwniNzeZ2yCEZaxOSLety3NJKbWsQhbow4aO2UhB83NkqeMl+IGaMxEAYinmHZ6Ubs4TVBgr6T/V8aPRyxcCiZLPMEEnAQuzHZx9BWzhZX4sIsJofsyjGoLK4po...</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-10-11T01:45:45.499809" elapsed="0.056356"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-10-11T01:45:45.559760" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCmAbT01kDJAGkZ0A86PLQmmTl6JgHWRPlmU6gzaHNlXzIiPcwniNzeZ2yCEZaxOSLety3NJKbWsQhbow4aO2UhB83NkqeMl+IGaMxEAYinmHZ6Ubs4TVBgr6T/V8aPRyxcCiZLPMEEnAQuzHZx9BWzhZX4sIsJofsyjGoLK4po...</msg>
<arg>${NETOPEER_PUB_KEY}</arg>
<arg>${public_key}</arg>
<doc>Makes the variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-10-11T01:45:45.556584" elapsed="0.003275"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-10-11T01:45:45.317169" elapsed="0.242814"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-10-11T01:45:45.604901" 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-10-11T01:45:45.560996" elapsed="0.044032"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-10-11T01:45:45.615661" 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-10-11T01:45:45.605387" elapsed="0.010396"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-10-11T01:45:45.560313" elapsed="0.055597"/>
</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-10-11T01:45:45.617788" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-10-11T01:45:45.617144" elapsed="0.000752"/>
</branch>
<branch type="ELSE">
<kw name="Get create device request template" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-11T01:45:45.619136" 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-10-11T01:45:45.619404" 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-10-11T01:45:45.618875" elapsed="0.000584"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-10-11T01:45:45.620528" level="INFO">${template} = {
    "device": {
        "unique-id": "{device_name}",
        "ssh-client-params": {
          "credentials": {
              "username": "{username}",
              "passwords": [ "{password}" ]
  ...</msg>
<arg>${template}</arg>
<doc>Makes the variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-10-11T01:45:45.619857" elapsed="0.000788"/>
</kw>
<status status="PASS" start="2026-10-11T01:45:45.618233" elapsed="0.002525"/>
</kw>
<status status="PASS" start="2026-10-11T01:45:45.617954" elapsed="0.002852"/>
</branch>
<status status="PASS" start="2026-10-11T01:45:45.617093" elapsed="0.003761"/>
</if>
<kw name="Replace String" owner="String">
<msg time="2026-10-11T01:45:45.621610" 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-10-11T01:45:45.621161" elapsed="0.000539"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-10-11T01:45:45.622432" 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-10-11T01:45:45.622027" elapsed="0.000460"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-10-11T01:45:45.623348" 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-10-11T01:45:45.622940" elapsed="0.000463"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-10-11T01:45:45.624188" 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-10-11T01:45:45.623784" elapsed="0.000460"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-10-11T01:45:45.628845" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:45.830706" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:46.232576" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:46.234360" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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-10-11T01:45:45.624558" elapsed="0.614750">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T01:45:46.239784" elapsed="0.000052"/>
</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-10-11T01:45:45.616392" elapsed="0.623650">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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-10-11T01:45:46.240583" elapsed="0.000080"/>
</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-10-11T01:45:46.241035" elapsed="0.000043"/>
</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-10-11T01:45:46.241462" elapsed="0.000062"/>
</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-10-11T01:45:46.241911" elapsed="0.000040"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:46.244170" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-10-11T01:45:46.561045" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-11T01:45:46.561290" level="INFO">${stdout} = </msg>
<msg time="2026-10-11T01:45:46.561379" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.40, please upgrade your client to a newer version</msg>
<msg time="2026-10-11T01:45:46.561461" 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-10-11T01:45:46.243337" elapsed="0.318199"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-11T01:45:46.562575" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-11T01:45:46.562010" elapsed="0.000684"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:46.563394" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-10-11T01:45:46.902697" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-11T01:45:46.903077" level="INFO">${stdout} = </msg>
<msg time="2026-10-11T01:45:46.903168" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.40, please upgrade your client to a newer version</msg>
<msg time="2026-10-11T01:45:46.903251" 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-10-11T01:45:46.563066" elapsed="0.340233"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:46.904299" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-10-11T01:45:46.986045" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:46.986290" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-10-11T01:45:46.986513" level="INFO">${stderr} = </msg>
<msg time="2026-10-11T01:45:46.986602" 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-10-11T01:45:46.903878" elapsed="0.082813"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:46.987312" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-10-11T01:45:47.035902" 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-10-11T01:45:46.987106" elapsed="0.048930"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-10-11T01:45:47.040850" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:47.242665" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:47.644533" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:47.646426" level="INFO">${resp} = None</msg>
<msg time="2026-10-11T01:45:47.646551" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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-10-11T01:45:47.036347" elapsed="0.615509">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-10-11T01:45:47.656175" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:47.857951" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:48.259698" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:48.261420" level="INFO">${resp} = None</msg>
<msg time="2026-10-11T01:45:48.261542" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:47.652220" elapsed="0.614391">ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:46.242543" elapsed="2.024433">Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:45.315951" elapsed="2.951162">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:48.270201" level="INFO">Creating Session using : alias=session, url=http://10.30.170.238:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7280ebc59dd0&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-11T01:45:48.269759" elapsed="0.001100"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:48.271540" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-10-11T01:45:48.285331" 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-10-11T01:45:48.271313" elapsed="0.014163"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:48.286092" 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-10-11T01:45:48.741854" 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-10-11T01:45:48.285895" elapsed="0.456103"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:48.742707" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-10-11T01:45:48.787938" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:48.788157" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQC+g6CTG70wI1BJoVyOKTuIX1VG177h2QZLnfNEfryb3ulsv7H6ZNREzp0tVR+LVK8wcJX69FsMmVxXLmq5eP7FUKKwx+sZ9WlYilfQZN4ZuQ5MCmerLZB5Vvv292f3qw1lT5wgjftCM8zW5W7koSdp6NjQknbtITJh8OnES1v9...</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-10-11T01:45:48.742412" elapsed="0.045831"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-10-11T01:45:48.791909" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQC+g6CTG70wI1BJoVyOKTuIX1VG177h2QZLnfNEfryb3ulsv7H6ZNREzp0tVR+LVK8wcJX69FsMmVxXLmq5eP7FUKKwx+sZ9WlYilfQZN4ZuQ5MCmerLZB5Vvv292f3qw1lT5wgjftCM8zW5W7koSdp6NjQknbtITJh8OnES1v9...</msg>
<arg>${NETOPEER_PUB_KEY}</arg>
<arg>${public_key}</arg>
<doc>Makes the variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-10-11T01:45:48.788705" elapsed="0.003303"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-10-11T01:45:48.269092" elapsed="0.523041"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-10-11T01:45:48.833562" 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-10-11T01:45:48.793177" elapsed="0.040552"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-10-11T01:45:48.844764" 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-10-11T01:45:48.834096" elapsed="0.010791"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-10-11T01:45:48.792506" elapsed="0.052510"/>
</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-10-11T01:45:48.846960" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-10-11T01:45:48.846258" elapsed="0.000810"/>
</branch>
<branch type="ELSE">
<kw name="Get create device request template" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-11T01:45:48.848335" 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-10-11T01:45:48.848668" 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-10-11T01:45:48.848067" elapsed="0.000659"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-10-11T01:45:48.849771" level="INFO">${template} = {
    "device": {
        "unique-id": "{device_name}",
        "ssh-client-params": {
          "credentials": {
              "username": "{username}",
              "passwords": [ "{password}" ]
  ...</msg>
<arg>${template}</arg>
<doc>Makes the variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-10-11T01:45:48.849072" elapsed="0.000789"/>
</kw>
<status status="PASS" start="2026-10-11T01:45:48.847422" elapsed="0.002549"/>
</kw>
<status status="PASS" start="2026-10-11T01:45:48.847128" elapsed="0.002892"/>
</branch>
<status status="PASS" start="2026-10-11T01:45:48.846206" elapsed="0.003865"/>
</if>
<kw name="Replace String" owner="String">
<msg time="2026-10-11T01:45:48.850892" 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-10-11T01:45:48.850379" elapsed="0.000570"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-10-11T01:45:48.851744" 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-10-11T01:45:48.851277" elapsed="0.000523"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-10-11T01:45:48.852566" 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-10-11T01:45:48.852121" elapsed="0.000528"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-10-11T01:45:48.853476" 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-10-11T01:45:48.852977" elapsed="0.000556"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-10-11T01:45:48.858379" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:49.060227" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:49.462286" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:49.464145" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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-10-11T01:45:48.853857" elapsed="0.615297">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T01:45:49.469596" elapsed="0.000101"/>
</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-10-11T01:45:48.845526" elapsed="0.624376">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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-10-11T01:45:49.470306" elapsed="0.000043"/>
</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-10-11T01:45:49.470785" elapsed="0.000042"/>
</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-10-11T01:45:49.471182" elapsed="0.000040"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:49.473529" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-10-11T01:45:49.771179" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-11T01:45:49.771454" level="INFO">${stdout} = </msg>
<msg time="2026-10-11T01:45:49.771548" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.40, please upgrade your client to a newer version</msg>
<msg time="2026-10-11T01:45:49.771673" 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-10-11T01:45:49.472677" elapsed="0.299046"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-11T01:45:49.772774" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-11T01:45:49.772160" elapsed="0.000702"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:49.773578" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-10-11T01:45:50.119896" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-11T01:45:50.120141" level="INFO">${stdout} = </msg>
<msg time="2026-10-11T01:45:50.120231" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.40, please upgrade your client to a newer version</msg>
<msg time="2026-10-11T01:45:50.120315" 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-10-11T01:45:49.773230" elapsed="0.347132"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:50.121191" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-10-11T01:45:50.202372" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:50.202680" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-10-11T01:45:50.202775" level="INFO">${stderr} = </msg>
<msg time="2026-10-11T01:45:50.202856" 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-10-11T01:45:50.120844" elapsed="0.082059"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:50.203539" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-10-11T01:45:50.255835" 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-10-11T01:45:50.203310" elapsed="0.052658"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-10-11T01:45:50.260511" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:50.462392" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:50.864280" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:50.866210" level="INFO">${resp} = None</msg>
<msg time="2026-10-11T01:45:50.866311" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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-10-11T01:45:50.256277" elapsed="0.614925">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-10-11T01:45:50.875534" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:51.077237" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:51.479090" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:51.481304" level="INFO">${resp} = None</msg>
<msg time="2026-10-11T01:45:51.481429" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:50.871584" elapsed="0.614761">ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:49.471868" elapsed="2.014864">Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:48.267663" elapsed="3.219198">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:51.490151" level="INFO">Creating Session using : alias=session, url=http://10.30.170.238:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7280eab4e050&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-11T01:45:51.489362" elapsed="0.001122"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:51.491098" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-10-11T01:45:51.504716" 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-10-11T01:45:51.490897" elapsed="0.013940"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:51.505429" 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-10-11T01:45:51.748457" 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-10-11T01:45:51.505210" elapsed="0.243380"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:51.749303" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-10-11T01:45:51.795715" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:51.795928" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCu4CdlgciUdufJnwdmyVl6tqD6EEPMG0mf5owsq74ZC5mN0p2w+80YGYsEfmPdcCnv8sEG383g5xAlob5tyof6aiDv8bctcoDuQfG6LHtGy06aNL+EXkFghvULIgtpn6Rk4MDG1dobXLQW9+6b6WdKr2DxGpY8u6nRHzu/9RWQ...</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-10-11T01:45:51.749088" elapsed="0.046897"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-10-11T01:45:51.799584" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCu4CdlgciUdufJnwdmyVl6tqD6EEPMG0mf5owsq74ZC5mN0p2w+80YGYsEfmPdcCnv8sEG383g5xAlob5tyof6aiDv8bctcoDuQfG6LHtGy06aNL+EXkFghvULIgtpn6Rk4MDG1dobXLQW9+6b6WdKr2DxGpY8u6nRHzu/9RWQ...</msg>
<arg>${NETOPEER_PUB_KEY}</arg>
<arg>${public_key}</arg>
<doc>Makes the variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-10-11T01:45:51.796357" elapsed="0.003354"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-10-11T01:45:51.488723" elapsed="0.311112"/>
</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-10-11T01:45:51.801883" level="INFO">Executing command 'rm -rf ./certs &amp;&amp; mkdir ./certs'.</msg>
<msg time="2026-10-11T01:45:51.851455" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:51.851702" 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-10-11T01:45:51.801674" elapsed="0.050083"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-10-11T01:45:51.904397" 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-10-11T01:45:51.852117" elapsed="0.052418"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:51.905169" level="INFO">Executing command 'openssl genrsa -out ./certs/ca.key 2048'.</msg>
<msg time="2026-10-11T01:45:52.222110" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:52.222315" 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-10-11T01:45:51.904960" elapsed="0.317429"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:52.223035" 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-10-11T01:45:52.285703" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:52.285907" 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-10-11T01:45:52.222813" elapsed="0.063147"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:52.286581" level="INFO">Executing command 'openssl genrsa -out ./certs/server.key 2048'.</msg>
<msg time="2026-10-11T01:45:52.818578" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:52.818825" 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-10-11T01:45:52.286347" elapsed="0.532530"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:52.819515" 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-10-11T01:45:52.871673" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:52.871877" 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-10-11T01:45:52.819263" elapsed="0.052667"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:52.872542" 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-10-11T01:45:52.937738" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:52.937942" 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-10-11T01:45:52.872314" elapsed="0.065679"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:52.938680" level="INFO">Executing command 'openssl rsa -in ./certs/server.key -pubout &gt; ./certs/server.pub'.</msg>
<msg time="2026-10-11T01:45:53.001608" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:53.001850" 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-10-11T01:45:52.938431" elapsed="0.063470"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:53.002518" level="INFO">Executing command 'openssl genrsa -out ./certs/client.key 2048'.</msg>
<msg time="2026-10-11T01:45:53.280510" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:53.280755" 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-10-11T01:45:53.002283" elapsed="0.278525"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:53.281443" 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-10-11T01:45:53.331675" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:53.331878" 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-10-11T01:45:53.281191" elapsed="0.050740"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:53.332642" 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-10-11T01:45:53.397494" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:53.397734" 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-10-11T01:45:53.332405" elapsed="0.065384"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:53.398420" level="INFO">Executing command 'mv ./certs ./configuration-files/certs'.</msg>
<msg time="2026-10-11T01:45:53.451455" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:53.451699" 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-10-11T01:45:53.398176" elapsed="0.053577"/>
</kw>
<doc>Generates certificates for 2-way TLS authentication (ca, server, client)</doc>
<status status="PASS" start="2026-10-11T01:45:51.800964" elapsed="1.650917"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-10-11T01:45:53.500830" 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-10-11T01:45:53.452216" elapsed="0.048744"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-10-11T01:45:53.511279" 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-10-11T01:45:53.501326" elapsed="0.010106"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-10-11T01:45:53.521509" 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-10-11T01:45:53.511824" elapsed="0.009838"/>
</kw>
<doc>Upload netopeer2 configuration files needed for TLS transport</doc>
<status status="PASS" start="2026-10-11T01:45:51.800183" elapsed="1.721610"/>
</kw>
<kw name="Register keys and certificates in ODL controller" owner="NetconfCallHome">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:53.523366" level="INFO">Executing command 'cat ./configuration-files/certs/client.key'.</msg>
<msg time="2026-10-11T01:45:53.536232" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:53.536473" level="INFO">${pem-client-key} = -----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCsA7V7Z4tLfTDe
DUyVQZQ2Y6/ynyKzBWhUEXGAtuqBAiqEDyzsscXNDuu5HeaJneQn3PBx3pkFSA4J
n6tLgzgexXwlJ9n5QrypeZ9SI87bkh82U2uzxrEayg...</msg>
<msg time="2026-10-11T01:45:53.536566" 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-10-11T01:45:53.523033" elapsed="0.013579"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-11T01:45:53.537258" 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-10-11T01:45:53.537554" 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-10-11T01:45:53.536984" elapsed="0.000624"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-10-11T01:45:53.538419" level="INFO">${body} = {
    "input": {
        "key-credential": [
            {
                "key-id": "tls-device-key",
                "private-key": "-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwg...</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-10-11T01:45:53.537968" elapsed="0.000508"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-10-11T01:45:53.544108" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-10-11T01:45:53.746061" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-10-11T01:45:54.148039" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-10-11T01:45:54.149966" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/operations/netconf-keystore:add-keystore-entry (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:53.538798" elapsed="0.616147">ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/operations/netconf-keystore:add-keystore-entry (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T01:45:54.155452" elapsed="0.000051"/>
</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-10-11T01:45:54.155887" elapsed="0.000052"/>
</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-10-11T01:45:54.156251" elapsed="0.000048"/>
</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-10-11T01:45:54.156643" elapsed="0.000044"/>
</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-10-11T01:45:54.156995" elapsed="0.000040"/>
</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-10-11T01:45:54.157363" elapsed="0.000040"/>
</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-10-11T01:45:54.157706" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T01:45:54.158068" elapsed="0.000039"/>
</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-10-11T01:45:54.158429" elapsed="0.000047"/>
</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-10-11T01:45:54.158802" elapsed="0.000046"/>
</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-10-11T01:45:54.159128" elapsed="0.000040"/>
</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-10-11T01:45:54.159548" elapsed="0.000041"/>
</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-10-11T01:45:54.159938" elapsed="0.000039"/>
</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-10-11T01:45:54.160247" elapsed="0.000039"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T01:45:54.160653" elapsed="0.000041"/>
</kw>
<doc>Register pre-configured netopeer2 certificates and key in ODL-netconf keystore</doc>
<status status="FAIL" start="2026-10-11T01:45:53.522293" elapsed="0.638594">ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/operations/netconf-keystore:add-keystore-entry (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:54.161243" elapsed="0.000050"/>
</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-10-11T01:45:54.161699" elapsed="0.000054"/>
</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-10-11T01:45:54.162131" elapsed="0.000040"/>
</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-10-11T01:45:54.162543" elapsed="0.000040"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:54.164297" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-10-11T01:45:54.481427" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-11T01:45:54.481707" level="INFO">${stdout} = </msg>
<msg time="2026-10-11T01:45:54.481800" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.40, please upgrade your client to a newer version</msg>
<msg time="2026-10-11T01:45:54.481882" 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-10-11T01:45:54.163950" elapsed="0.317978"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-11T01:45:54.483003" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-11T01:45:54.482393" elapsed="0.000695"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:54.483844" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-10-11T01:45:54.825375" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-11T01:45:54.825612" level="INFO">${stdout} = </msg>
<msg time="2026-10-11T01:45:54.825744" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.40, please upgrade your client to a newer version</msg>
<msg time="2026-10-11T01:45:54.825899" 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-10-11T01:45:54.483475" elapsed="0.342475"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:54.826776" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-10-11T01:45:54.909787" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:54.910025" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-10-11T01:45:54.910115" level="INFO">${stderr} = </msg>
<msg time="2026-10-11T01:45:54.910196" 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-10-11T01:45:54.826402" elapsed="0.083840"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T01:45:54.910920" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-10-11T01:45:54.963382" 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-10-11T01:45:54.910715" elapsed="0.052797"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-10-11T01:45:54.967811" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:55.170353" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:55.572334" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:55.574142" level="INFO">${resp} = None</msg>
<msg time="2026-10-11T01:45:55.574237" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', 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-10-11T01:45:54.963851" elapsed="0.615311">ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-10-11T01:45:55.583551" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:55.785385" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:56.187387" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:56.189234" level="INFO">${resp} = None</msg>
<msg time="2026-10-11T01:45:56.189354" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:55.579542" elapsed="0.614658">ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:54.163178" elapsed="2.031350">Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:51.487336" elapsed="4.707346">ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/operations/netconf-keystore:add-keystore-entry (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

1) ConnectionError: HTTPConnectionPool(host='10.30.170.238', 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.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

2) ConnectionError: HTTPConnectionPool(host='10.30.170.238', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:56.197597" level="INFO">Executing command 'pip uninstall docker-compose'.</msg>
<msg time="2026-10-11T01:45:57.012568" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T01:45:57.012846" level="INFO">${stdout} = </msg>
<msg time="2026-10-11T01:45:57.012937" level="INFO">${stderr} = WARNING: Skipping docker-compose as it is not installed.</msg>
<msg time="2026-10-11T01:45:57.013019" 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-10-11T01:45:56.197228" elapsed="0.815838"/>
</kw>
<doc>Uninstall docker-compose on tools system</doc>
<status status="PASS" start="2026-10-11T01:45:56.196745" elapsed="0.816466"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-10-11T01:45:57.013686" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects </doc>
<status status="PASS" start="2026-10-11T01:45:57.013498" elapsed="0.000590"/>
</kw>
<kw name="Close All Connections" owner="SSHLibrary">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-10-11T01:45:57.014386" elapsed="0.000571"/>
</kw>
<doc>Tearing down the setup.</doc>
<status status="PASS" start="2026-10-11T01:45:56.196159" elapsed="0.818916"/>
</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-10-11T01:45:23.121530" elapsed="33.893609"/>
</suite>
<status status="FAIL" start="2026-10-11T01:45:23.082740" elapsed="33.934973"/>
</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-10-11T01:45:33.665945" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:33.867785" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:34.269611" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:35.097421" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:35.299480" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:35.701557" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:35.714164" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:35.916167" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:36.318249" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:36.803607" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:37.005391" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:37.407304" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:38.172123" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:38.373979" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:38.775972" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:38.787460" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:38.989264" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:39.391213" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:39.712312" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:39.914332" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:40.316333" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:41.120425" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:41.322389" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:41.724373" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:41.736243" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:41.938097" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:42.339879" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:42.670880" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:42.872383" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:43.274140" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:44.088576" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:44.290359" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:44.692236" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:44.704221" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:44.906306" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:45.308134" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:45.628845" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:45.830706" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:46.232576" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:47.040850" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:47.242665" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:47.644533" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:47.656175" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:47.857951" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:48.259698" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:48.858379" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:49.060227" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:49.462286" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:50.260511" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:50.462392" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:50.864280" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:50.875534" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:51.077237" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:51.479090" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:53.544108" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-10-11T01:45:53.746061" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-10-11T01:45:54.148039" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-10-11T01:45:54.967811" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:55.170353" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:55.572334" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', 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-10-11T01:45:55.583551" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:55.785385" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-10-11T01:45:56.187387" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.238', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
</errors>
</robot>
