<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-04-27T14:26:34.171868" 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-04-27T14:26:34.697270" 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-04-27T14:26:34.696743" elapsed="0.000570"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-27T14:26:34.699697" level="INFO">Length is 0.</msg>
<msg time="2026-04-27T14:26:34.699794" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-27T14:26:34.699142" elapsed="0.000682"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-27T14:26:34.699975" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-27T14:26:34.701468" level="INFO">Logging into '10.30.170.198:22' as 'jenkins'.</msg>
<msg time="2026-04-27T14:26:35.390807" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

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

 System information as of Mon Apr 27 14:26:34 UTC 2026

  System load:  0.03               Processes:             105
  Usage of /:   20.7% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.198
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


[?2004h[jenkins@releng-00473-37-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-04-27T14:26:34.700893" elapsed="0.690150"/>
</kw>
<msg time="2026-04-27T14:26:35.391159" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-27T14:26:34.700544" elapsed="0.690742"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-27T14:26:34.698623" elapsed="0.692794"/>
</kw>
<msg time="2026-04-27T14:26:35.391476" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-27T14:26:34.698083" elapsed="0.693449"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-27T14:26:34.697519" elapsed="0.694102"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-04-27T14:26:35.391686" elapsed="0.000048"/>
</return>
<msg time="2026-04-27T14:26:35.391917" 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-04-27T14:26:34.696275" elapsed="0.695671"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-27T14:26:35.392612" level="INFO">${netopeer_conn_id} = 1</msg>
<arg>${netopeer_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-27T14:26:35.392152" elapsed="0.000506"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-27T14:26:35.395276" 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-04-27T14:26:35.392800" elapsed="0.002537"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-27T14:26:36.088222" 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  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 8053k  100 8053k    0     0  11.9M      0 --:--:-- --:--:-- --:--:-- 11.9M
[?2004h[jenkins@releng-00473-37-1-docker-0 ~]&gt;</msg>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-27T14:26:35.396503" elapsed="0.691951"/>
</kw>
<msg time="2026-04-27T14:26:36.088638" 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-04-27T14:26:35.395997" elapsed="0.692675"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:36.089182" level="INFO">Executing command 'sudo chmod +x /usr/local/bin/docker-compose'.</msg>
<msg time="2026-04-27T14:26:36.111651" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:26:36.112005" level="INFO">${stdout} = </msg>
<msg time="2026-04-27T14:26:36.112124" level="INFO">${stderr} = </msg>
<msg time="2026-04-27T14:26:36.112282" 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-04-27T14:26:36.088923" elapsed="0.023420"/>
</kw>
<doc>Install docker-compose on tools system.</doc>
<status status="PASS" start="2026-04-27T14:26:34.691954" elapsed="1.420796"/>
</kw>
<kw name="Pull Netopeer2 Docker Image" owner="NetconfCallHome">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:36.114347" level="INFO">Executing command 'docker pull sysrepo/sysrepo-netopeer2:latest'.</msg>
<msg time="2026-04-27T14:26:46.392104" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:26:46.392690" level="INFO">${stdout} = latest: Pulling from sysrepo/sysrepo-netopeer2
fc878cd0a91c: Pulling fs layer
d51af753c3d3: Pulling fs layer
399fb1102f3f: Pulling fs layer
c2b2cc7242a0: Pulling fs layer
4fa0252bc3d9: Pulling fs laye...</msg>
<msg time="2026-04-27T14:26:46.392814" level="INFO">${stderr} = </msg>
<msg time="2026-04-27T14:26:46.392909" 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-04-27T14:26:36.113869" elapsed="10.279110"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:46.394285" level="INFO">Executing command 'docker images'.</msg>
<msg time="2026-04-27T14:26:46.506419" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:26:46.506871" level="INFO">${stdout} = IMAGE                              ID             DISK USAGE   CONTENT SIZE   EXTRA
sysrepo/sysrepo-netopeer2:latest   36cc1d841c97        914MB          232MB        </msg>
<msg time="2026-04-27T14:26:46.507016" level="INFO">${stderr} = WARNING: This output is designed for human readability. For machine-readable output, please use --format.</msg>
<msg time="2026-04-27T14:26:46.507185" 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-04-27T14:26:46.393750" elapsed="0.113541"/>
</kw>
<doc>Pulls the netopeer image from the docker repository.</doc>
<status status="PASS" start="2026-04-27T14:26:36.113291" elapsed="10.394339"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-27T14:26:46.563768" level="INFO">[chan 4] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-27T14:26:46.575558" 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-04-27T14:26:46.508135" elapsed="0.067608"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-27T14:26:46.584402" 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-04-27T14:26:46.576231" elapsed="0.008267"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:46.585031" level="INFO">Executing command 'sed -i -e 's/ODL_SYSTEM_IP/10.30.171.250/g' docker-compose.yaml'.</msg>
<msg time="2026-04-27T14:26:46.597783" 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-04-27T14:26:46.584757" elapsed="0.013312"/>
</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-04-27T14:26:46.622777" elapsed="0.000517"/>
</kw>
<msg time="2026-04-27T14:26:46.623374" 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-04-27T14:26:46.622389" elapsed="0.001068"/>
</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-04-27T14:26:46.621992" elapsed="0.001553"/>
</kw>
<msg time="2026-04-27T14:26:46.623593" 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-04-27T14:26:46.612018" elapsed="0.011639"/>
</kw>
<msg time="2026-04-27T14:26:46.623798" 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-04-27T14:26:46.611414" elapsed="0.012410"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:46.624125" level="INFO">Executing command 'sed -i -e 's/NETCONF_CH_SSH/4334/g' docker-compose.yaml'.</msg>
<msg time="2026-04-27T14:26:46.649364" 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-04-27T14:26:46.623969" elapsed="0.025572"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:46.650219" level="INFO">Executing command 'sed -i -e 's/NETCONF_CH_TLS/4335/g' docker-compose.yaml'.</msg>
<msg time="2026-04-27T14:26:46.701571" 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-04-27T14:26:46.649918" elapsed="0.051851"/>
</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-04-27T14:26:46.724252" elapsed="0.000491"/>
</kw>
<msg time="2026-04-27T14:26:46.724823" 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-04-27T14:26:46.723767" elapsed="0.001127"/>
</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-04-27T14:26:46.723119" elapsed="0.001951"/>
</kw>
<msg time="2026-04-27T14:26:46.725120" 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-04-27T14:26:46.713353" elapsed="0.011828"/>
</kw>
<msg time="2026-04-27T14:26:46.725353" 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-04-27T14:26:46.712679" elapsed="0.012701"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T14:26:46.725962" level="INFO">${substring2} = "node-id":"netopeer2"</msg>
<var>${substring2}</var>
<arg>"node-id":"netopeer2"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-27T14:26:46.725605" elapsed="0.000391"/>
</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-04-27T14:26:46.741732" elapsed="0.000732"/>
</kw>
<msg time="2026-04-27T14:26:46.742569" 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-04-27T14:26:46.741050" elapsed="0.001615"/>
</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-04-27T14:26:46.740663" elapsed="0.002120"/>
</kw>
<msg time="2026-04-27T14:26:46.742849" 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-04-27T14:26:46.733453" elapsed="0.009463"/>
</kw>
<msg time="2026-04-27T14:26:46.743078" 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-04-27T14:26:46.732934" elapsed="0.010184"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-27T14:26:46.744007" level="INFO">${netconf_mount_expected_values} = ['"connection-status":"connected"', '"node-id":"netopeer2"', '"available-capabilities"']</msg>
<var>${netconf_mount_expected_values}</var>
<arg>${substring1}</arg>
<arg>${substring2}</arg>
<arg>${substring3}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-27T14:26:46.743376" elapsed="0.000675"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-27T14:26:46.744889" level="INFO">${netconf_mount_expected_values} = ['"connection-status":"connected"', '"node-id":"netopeer2"', '"available-capabilities"']</msg>
<arg>${netconf_mount_expected_values}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-27T14:26:46.744348" elapsed="0.000606"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-27T14:26:46.748993" level="INFO">${CREATE_GLOBAL_CREDENTIALS_REQ} = /w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/create_global_credentials.json</msg>
<arg>${CREATE_GLOBAL_CREDENTIALS_REQ}</arg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/create_global_credentials.json</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-27T14:26:46.745194" elapsed="0.003851"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-27T14:26:46.752730" level="INFO">${CREATE_SSH_DEVICE_REQ} = /w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/create_ssh_device.json</msg>
<arg>${CREATE_SSH_DEVICE_REQ}</arg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/create_ssh_device.json</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-27T14:26:46.749259" elapsed="0.003521"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-27T14:26:46.755947" level="INFO">${CREATE_SSH_DEVICE_REQ_HOST_KEY_ONLY} = /w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/create_device_hostkey_only.json</msg>
<arg>${CREATE_SSH_DEVICE_REQ_HOST_KEY_ONLY}</arg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/create_device_hostkey_only.json</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-27T14:26:46.752937" elapsed="0.003061"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-27T14:26:46.759985" level="INFO">${CREATE_TLS_DEVICE_REQ} = /w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/create_tls_device.json</msg>
<arg>${CREATE_TLS_DEVICE_REQ}</arg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/create_tls_device.json</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-27T14:26:46.756170" elapsed="0.003866"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-27T14:26:46.763805" level="INFO">${ADD_KEYSTORE_ENTRY_REQ} = /w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/add_keystore_entry.json</msg>
<arg>${ADD_KEYSTORE_ENTRY_REQ}</arg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/add_keystore_entry.json</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-27T14:26:46.760195" elapsed="0.003662"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-27T14:26:46.767759" level="INFO">${ADD_PRIVATE_KEY_REQ} = /w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/add_private_key.json</msg>
<arg>${ADD_PRIVATE_KEY_REQ}</arg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/add_private_key.json</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-27T14:26:46.764032" elapsed="0.003851"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-27T14:26:46.771512" level="INFO">${ADD_TRUSTED_CERTIFICATE} = /w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/add_trusted_certificate.json</msg>
<arg>${ADD_TRUSTED_CERTIFICATE}</arg>
<arg>/w/workspace/netconf-csit-1node-gate-callhome-only-vanadium/test/csit/libraries/../variables/netconf/callhome/json/add_trusted_certificate.json</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-27T14:26:46.768049" elapsed="0.003523"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:46.771865" level="INFO">Executing command 'ssh-keygen -q -t rsa -b 2048 -N '' -m pem -f ./incorrect_ssh_host_rsa_key'.</msg>
<msg time="2026-04-27T14:26:46.946701" 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-04-27T14:26:46.771734" elapsed="0.175239"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:46.947996" level="INFO">Executing command 'awk '{print $2}' incorrect_ssh_host_rsa_key.pub'.</msg>
<msg time="2026-04-27T14:26:46.997395" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:26:46.997696" level="INFO">${incorrect_public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCjCanLrzvWu/aO2Az9SKTsw7pDZq1QmDZhMwbSmcqhSgYEVhRQ4/OUlB3FtU+fkXhm1cxAjFMc8tWxFh2DxlJjGyVzWB3doPeQVHNUgSpPovDbA4lxaE9lGaqjynLkieMkuViBK3ULi3DOU2k6KsDKYFIbvHBFxBgZ7K1BiLwd...</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-04-27T14:26:46.947612" elapsed="0.050145"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-27T14:26:47.007156" level="INFO">${INCORRECT_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCjCanLrzvWu/aO2Az9SKTsw7pDZq1QmDZhMwbSmcqhSgYEVhRQ4/OUlB3FtU+fkXhm1cxAjFMc8tWxFh2DxlJjGyVzWB3doPeQVHNUgSpPovDbA4lxaE9lGaqjynLkieMkuViBK3ULi3DOU2k6KsDKYFIbvHBFxBgZ7K1BiLwd...</msg>
<arg>${INCORRECT_PUB_KEY}</arg>
<arg>${incorrect_public_key}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-27T14:26:46.998204" elapsed="0.009025"/>
</kw>
<doc>Get the suite ready for callhome test cases.</doc>
<status status="PASS" start="2026-04-27T14:26:34.691625" elapsed="12.315725"/>
</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-04-27T14:26:47.009463" level="INFO">Creating Session using : alias=session, url=http://10.30.171.250:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x77659d6b2e90&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-27T14:26:47.009047" elapsed="0.000688"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:47.010074" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-04-27T14:26:47.049871" 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-04-27T14:26:47.009937" elapsed="0.040107"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:47.050653" 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-04-27T14:26:47.282859" 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-04-27T14:26:47.050402" elapsed="0.232653"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:47.283808" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-04-27T14:26:47.333636" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:26:47.333946" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDAK8/ERwEpkYPB1PUwP4jqw1LX6GueT5JHSpLpvZH9tMD4aG+1q/OnAYwH7qDXsAMQ4j98eJwV7NYmG1LBQty9JLurGJYUokujbUTEBkqxbj8gx3yZCp/vj769frBqPL/Fgt0Q+uxQ6YE0wsIjiGsrMKr3r+GsWC0nFpciFSXy...</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-04-27T14:26:47.283524" elapsed="0.050487"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-04-27T14:26:47.343547" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDAK8/ERwEpkYPB1PUwP4jqw1LX6GueT5JHSpLpvZH9tMD4aG+1q/OnAYwH7qDXsAMQ4j98eJwV7NYmG1LBQty9JLurGJYUokujbUTEBkqxbj8gx3yZCp/vj769frBqPL/Fgt0Q+uxQ6YE0wsIjiGsrMKr3r+GsWC0nFpciFSXy...</msg>
<arg>${NETOPEER_PUB_KEY}</arg>
<arg>${public_key}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-04-27T14:26:47.334483" elapsed="0.009185"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-04-27T14:26:47.008620" elapsed="0.335210"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-27T14:26:47.375824" 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-04-27T14:26:47.345023" elapsed="0.030918"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-27T14:26:47.383208" 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-04-27T14:26:47.376164" elapsed="0.007166"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-04-27T14:26:47.344348" elapsed="0.039094"/>
</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-04-27T14:26:47.389809" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-27T14:26:47.384655" elapsed="0.005236"/>
</branch>
<branch type="ELSE">
<kw name="Get create device request template" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-27T14:26:47.390846" 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-04-27T14:26:47.391085" 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-04-27T14:26:47.390605" elapsed="0.000524"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-04-27T14:26:47.392005" level="INFO">${template} = {
    "device": {
        "unique-id": "{device_name}",
        "ssh-client-params": {
          "credentials": {
              "username": "{username}",
              "passwords": [ "{password}" ]
  ...</msg>
<arg>${template}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-04-27T14:26:47.391392" elapsed="0.000702"/>
</kw>
<status status="PASS" start="2026-04-27T14:26:47.390167" elapsed="0.002035"/>
</kw>
<status status="PASS" start="2026-04-27T14:26:47.389936" elapsed="0.002331"/>
</branch>
<status status="PASS" start="2026-04-27T14:26:47.384527" elapsed="0.007777"/>
</if>
<kw name="Replace String" owner="String">
<msg time="2026-04-27T14:26:47.393029" 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-04-27T14:26:47.392556" elapsed="0.000525"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-27T14:26:47.394001" 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-04-27T14:26:47.393543" elapsed="0.000512"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-27T14:26:47.394796" 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-04-27T14:26:47.394361" elapsed="0.000486"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-27T14:26:47.395584" 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-04-27T14:26:47.395125" elapsed="0.000502"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-27T14:26:47.401317" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:47.603303" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:48.006058" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:48.009094" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:47.395834" elapsed="0.621846">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-27T14:26:48.017967" elapsed="0.000032"/>
</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-04-27T14:26:47.383939" elapsed="0.634189">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:48.018329" elapsed="0.000024"/>
</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-04-27T14:26:48.018575" elapsed="0.000024"/>
</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-04-27T14:26:48.018807" elapsed="0.000022"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:48.019852" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-04-27T14:26:48.295531" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-27T14:26:48.295908" level="INFO">${stdout} = </msg>
<msg time="2026-04-27T14:26:48.296013" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-04-27T14:26:48.296111" 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-04-27T14:26:48.019633" elapsed="0.276530"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T14:26:48.297501" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T14:26:48.296743" elapsed="0.000859"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:48.298354" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-04-27T14:26:48.608123" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-27T14:26:48.608454" level="INFO">${stdout} = </msg>
<msg time="2026-04-27T14:26:48.608517" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-04-27T14:26:48.608576" 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-04-27T14:26:48.297930" elapsed="0.310683"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:48.609298" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-04-27T14:26:48.668862" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:26:48.669227" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-04-27T14:26:48.669375" level="INFO">${stderr} = </msg>
<msg time="2026-04-27T14:26:48.669472" 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-04-27T14:26:48.608968" elapsed="0.060614"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:48.670344" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-04-27T14:26:48.721662" 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-04-27T14:26:48.670022" elapsed="0.051809"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-27T14:26:48.725900" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:48.927985" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:49.330488" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:49.332739" level="INFO">${resp} = None</msg>
<msg time="2026-04-27T14:26:49.332822" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:48.722153" elapsed="0.614219">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-27T14:26:49.340408" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:49.541896" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:49.944042" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:49.946598" level="INFO">${resp} = None</msg>
<msg time="2026-04-27T14:26:49.946731" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:49.336699" elapsed="0.614223">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:48.019261" elapsed="1.931959">Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:47.007458" elapsed="2.944005">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:49.954465" level="INFO">Creating Session using : alias=session, url=http://10.30.171.250:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x77659d772590&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-27T14:26:49.953909" elapsed="0.000887"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:49.955294" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-04-27T14:26:49.969112" 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-04-27T14:26:49.955090" elapsed="0.014231"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:49.969883" 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-04-27T14:26:50.096399" 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-04-27T14:26:49.969664" elapsed="0.126953"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:50.097430" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-04-27T14:26:50.150167" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:26:50.150490" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCulBq4U1eorOodeoQ9zdW5v8FGnpGs5i3Gmh4jv1lTDo5YRFISomR1CdRyt7Cu4hPO7GAyHyJmx0jJt+ehFf+LgSCbN0WBMZe4mISr5zcD5ETcXvqytoh4KRI9roz4I2W2XgH6j2Xl61AZTJOZL98dJLCnFI2SEHoERuk2MTk5...</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-04-27T14:26:50.097057" elapsed="0.053481"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-04-27T14:26:50.156948" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCulBq4U1eorOodeoQ9zdW5v8FGnpGs5i3Gmh4jv1lTDo5YRFISomR1CdRyt7Cu4hPO7GAyHyJmx0jJt+ehFf+LgSCbN0WBMZe4mISr5zcD5ETcXvqytoh4KRI9roz4I2W2XgH6j2Xl61AZTJOZL98dJLCnFI2SEHoERuk2MTk5...</msg>
<arg>${NETOPEER_PUB_KEY}</arg>
<arg>${public_key}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-04-27T14:26:50.151070" elapsed="0.005968"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-04-27T14:26:49.953378" elapsed="0.203777"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-27T14:26:50.192112" 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-04-27T14:26:50.157931" elapsed="0.034416"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-27T14:26:50.200211" 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-04-27T14:26:50.192716" elapsed="0.007612"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-04-27T14:26:50.157487" elapsed="0.042941"/>
</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-04-27T14:26:50.206520" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-27T14:26:50.201398" elapsed="0.005202"/>
</branch>
<branch type="ELSE">
<kw name="Get create device request template" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-27T14:26:50.207516" 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-04-27T14:26:50.207733" 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-04-27T14:26:50.207259" elapsed="0.000576"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-04-27T14:26:50.208584" level="INFO">${template} = {
    "device": {
        "unique-id": "{device_name}",
        "ssh-client-params": {
          "credentials": {
              "username": "{username}",
              "passwords": [ "{password}" ]
  ...</msg>
<arg>${template}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-04-27T14:26:50.208063" elapsed="0.000585"/>
</kw>
<status status="PASS" start="2026-04-27T14:26:50.206846" elapsed="0.001883"/>
</kw>
<status status="PASS" start="2026-04-27T14:26:50.206644" elapsed="0.002120"/>
</branch>
<status status="PASS" start="2026-04-27T14:26:50.201358" elapsed="0.007440"/>
</if>
<kw name="Replace String" owner="String">
<msg time="2026-04-27T14:26:50.209358" 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-04-27T14:26:50.208994" elapsed="0.000404"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-27T14:26:50.209923" 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-04-27T14:26:50.209602" elapsed="0.000360"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-27T14:26:50.210495" 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-04-27T14:26:50.210158" elapsed="0.000376"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-27T14:26:50.211052" 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-04-27T14:26:50.210735" elapsed="0.000356"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-27T14:26:50.215024" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:50.416943" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:50.819144" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:50.821736" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:50.211303" elapsed="0.615968">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-27T14:26:50.827761" elapsed="0.000059"/>
</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-04-27T14:26:50.200832" elapsed="0.627266">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:50.828499" elapsed="0.000049"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>90s</arg>
<arg>2s</arg>
<arg>NetconfCallHome.Check Device Status</arg>
<arg>FAILED_AUTH_FAILURE</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-27T14:26:50.828943" elapsed="0.000054"/>
</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-04-27T14:26:50.829369" elapsed="0.000046"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:50.831369" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-04-27T14:26:51.137211" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-27T14:26:51.137633" level="INFO">${stdout} = </msg>
<msg time="2026-04-27T14:26:51.137735" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-04-27T14:26:51.137829" 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-04-27T14:26:50.830918" elapsed="0.306964"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T14:26:51.139188" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T14:26:51.138514" elapsed="0.000806"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:51.140046" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-04-27T14:26:51.455812" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-27T14:26:51.456207" level="INFO">${stdout} = </msg>
<msg time="2026-04-27T14:26:51.456369" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-04-27T14:26:51.456469" 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-04-27T14:26:51.139647" elapsed="0.316875"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:51.457537" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-04-27T14:26:51.526273" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:26:51.526699" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-04-27T14:26:51.526824" level="INFO">${stderr} = </msg>
<msg time="2026-04-27T14:26:51.526916" 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-04-27T14:26:51.457016" elapsed="0.069952"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:51.527683" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-04-27T14:26:51.573742" 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-04-27T14:26:51.527419" elapsed="0.046474"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-27T14:26:51.578936" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:51.780907" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:52.183365" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:52.186411" level="INFO">${resp} = None</msg>
<msg time="2026-04-27T14:26:52.186525" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:51.574334" elapsed="0.616564">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-27T14:26:52.194586" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:52.396128" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:52.798095" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:52.799921" level="INFO">${resp} = None</msg>
<msg time="2026-04-27T14:26:52.799984" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:52.191213" elapsed="0.611267">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:50.830133" elapsed="1.972576">Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:49.952121" elapsed="2.850682">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:52.804637" level="INFO">Creating Session using : alias=session, url=http://10.30.171.250:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x77659d792b50&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-27T14:26:52.804261" elapsed="0.000591"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:52.805157" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-04-27T14:26:52.817917" 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-04-27T14:26:52.805034" elapsed="0.012975"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:52.818475" 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-04-27T14:26:53.121948" 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-04-27T14:26:52.818311" elapsed="0.303877"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:53.123068" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-04-27T14:26:53.173727" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:26:53.174028" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDSu/6ZdtljUjLhbCmzXwWlLZ+NB8HhdZ2ZTBNfTnrQqzCRLcScEUarPzXlik0KZBvGKVXtun/pkJH4j2PZ8+m8sNsiX54rTWAF0G1eXZG1bcblhwfQc70+LZQG01hg7IhLo+mTpb9SbVP6zGPg+uCnO5k2/3mvymPLJLpu9l1o...</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-04-27T14:26:53.122710" elapsed="0.051406"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-04-27T14:26:53.185034" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDSu/6ZdtljUjLhbCmzXwWlLZ+NB8HhdZ2ZTBNfTnrQqzCRLcScEUarPzXlik0KZBvGKVXtun/pkJH4j2PZ8+m8sNsiX54rTWAF0G1eXZG1bcblhwfQc70+LZQG01hg7IhLo+mTpb9SbVP6zGPg+uCnO5k2/3mvymPLJLpu9l1o...</msg>
<arg>${NETOPEER_PUB_KEY}</arg>
<arg>${public_key}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-04-27T14:26:53.174652" elapsed="0.010464"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-04-27T14:26:52.803921" elapsed="0.381292"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-27T14:26:53.222227" 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-04-27T14:26:53.185978" elapsed="0.036472"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-27T14:26:53.230349" 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-04-27T14:26:53.222877" elapsed="0.007584"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-04-27T14:26:53.185511" elapsed="0.045058"/>
</kw>
<kw name="Register global credentials for SSH call-home devices" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-27T14:26:53.231557" 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-04-27T14:26:53.231764" 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-04-27T14:26:53.231329" elapsed="0.000473"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-27T14:26:53.232439" 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-04-27T14:26:53.232007" elapsed="0.000485"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-27T14:26:53.233157" 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-04-27T14:26:53.232791" elapsed="0.000404"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-27T14:26:53.236888" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:53.438427" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:53.841003" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:53.843438" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:53.233460" elapsed="0.614684">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-27T14:26:53.848697" elapsed="0.000044"/>
</kw>
<arg>root</arg>
<arg>root</arg>
<doc>Set global credentials for SSH call-home devices</doc>
<status status="FAIL" start="2026-04-27T14:26:53.230842" elapsed="0.618065">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:53.849366" elapsed="0.000040"/>
</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-04-27T14:26:53.849616" elapsed="0.000050"/>
</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-04-27T14:26:53.849974" elapsed="0.000035"/>
</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-04-27T14:26:53.850330" elapsed="0.000040"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:53.851657" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-04-27T14:26:54.137623" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-27T14:26:54.137991" level="INFO">${stdout} = </msg>
<msg time="2026-04-27T14:26:54.138090" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-04-27T14:26:54.138184" 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-04-27T14:26:53.851364" elapsed="0.286910"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T14:26:54.139421" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T14:26:54.138724" elapsed="0.000795"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:54.140216" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-04-27T14:26:54.458188" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-27T14:26:54.458662" level="INFO">${stdout} = </msg>
<msg time="2026-04-27T14:26:54.458773" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-04-27T14:26:54.458868" 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-04-27T14:26:54.139836" elapsed="0.319086"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:54.459953" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-04-27T14:26:54.516086" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:26:54.516465" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-04-27T14:26:54.516572" level="INFO">${stderr} = </msg>
<msg time="2026-04-27T14:26:54.516684" 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-04-27T14:26:54.459414" elapsed="0.057325"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:54.517438" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-04-27T14:26:54.569817" 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-04-27T14:26:54.517143" elapsed="0.052879"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-27T14:26:54.576328" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:54.778220" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:55.181413" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:55.184065" level="INFO">${resp} = None</msg>
<msg time="2026-04-27T14:26:55.184233" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:54.570484" elapsed="0.619181">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-27T14:26:55.194861" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:55.396064" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:55.798818" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:55.800993" level="INFO">${resp} = None</msg>
<msg time="2026-04-27T14:26:55.801103" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:55.190295" elapsed="0.616163">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:53.850850" elapsed="1.955977">Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:52.803158" elapsed="3.003829">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:55.810828" level="INFO">Creating Session using : alias=session, url=http://10.30.171.250:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x77659d7922d0&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-27T14:26:55.810151" elapsed="0.001142"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:55.811628" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-04-27T14:26:55.823934" 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-04-27T14:26:55.811518" elapsed="0.012553"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:55.824637" 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-04-27T14:26:55.984804" 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-04-27T14:26:55.824414" elapsed="0.160590"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:55.985769" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-04-27T14:26:56.037955" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:26:56.038228" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCa5tHaGo2KWDuLor1G3hXq664PqkDPWU7OxepG5pB/Wv4/wOqE7JnY5v9k5qafB6KxwLKy7Jz2VQfSBQdgG4Psk9DhksbDagaFIo6YziixEQuYr5NdNeDZxu5YgvinQLH4lriXuKJLxGGOaVM5XCn0+aKPzXKlK1l8aFUEkC6N...</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-04-27T14:26:55.985482" elapsed="0.052901"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-04-27T14:26:56.046485" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCa5tHaGo2KWDuLor1G3hXq664PqkDPWU7OxepG5pB/Wv4/wOqE7JnY5v9k5qafB6KxwLKy7Jz2VQfSBQdgG4Psk9DhksbDagaFIo6YziixEQuYr5NdNeDZxu5YgvinQLH4lriXuKJLxGGOaVM5XCn0+aKPzXKlK1l8aFUEkC6N...</msg>
<arg>${NETOPEER_PUB_KEY}</arg>
<arg>${public_key}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-04-27T14:26:56.038886" elapsed="0.007675"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-04-27T14:26:55.809395" elapsed="0.237261"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-27T14:26:56.085769" 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-04-27T14:26:56.047378" elapsed="0.038535"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-27T14:26:56.093558" 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-04-27T14:26:56.086420" elapsed="0.007223"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-04-27T14:26:56.046920" elapsed="0.046813"/>
</kw>
<kw name="Register global credentials for SSH call-home devices" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-27T14:26:56.094726" 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-04-27T14:26:56.094919" 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-04-27T14:26:56.094508" elapsed="0.000447"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-27T14:26:56.095610" 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-04-27T14:26:56.095176" elapsed="0.000482"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-27T14:26:56.096189" 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-04-27T14:26:56.095864" elapsed="0.000362"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-27T14:26:56.100022" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:56.301528" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:56.704033" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:56.706152" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:56.096442" elapsed="0.614087">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-27T14:26:56.710850" elapsed="0.000038"/>
</kw>
<arg>root</arg>
<arg>incorrect</arg>
<doc>Set global credentials for SSH call-home devices</doc>
<status status="FAIL" start="2026-04-27T14:26:56.093995" elapsed="0.617041">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:56.711471" elapsed="0.000038"/>
</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-04-27T14:26:56.711709" elapsed="0.000030"/>
</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-04-27T14:26:56.711963" elapsed="0.000029"/>
</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-04-27T14:26:56.712192" elapsed="0.000028"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:56.713404" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-04-27T14:26:57.010012" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-27T14:26:57.010426" level="INFO">${stdout} = </msg>
<msg time="2026-04-27T14:26:57.010563" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-04-27T14:26:57.010695" 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-04-27T14:26:56.713123" elapsed="0.297630"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T14:26:57.012198" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T14:26:57.011359" elapsed="0.000982"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:57.013184" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-04-27T14:26:57.325333" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-27T14:26:57.325718" level="INFO">${stdout} = </msg>
<msg time="2026-04-27T14:26:57.325821" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-04-27T14:26:57.325941" 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-04-27T14:26:57.012705" elapsed="0.313297"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:57.326989" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-04-27T14:26:57.387791" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:26:57.388065" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-04-27T14:26:57.388186" level="INFO">${stderr} = </msg>
<msg time="2026-04-27T14:26:57.388326" 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-04-27T14:26:57.326475" elapsed="0.061906"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:57.388984" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-04-27T14:26:57.441658" 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-04-27T14:26:57.388742" elapsed="0.053076"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-27T14:26:57.446757" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:57.648357" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:58.050802" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:58.053010" level="INFO">${resp} = None</msg>
<msg time="2026-04-27T14:26:58.053279" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:57.442159" elapsed="0.616268">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-27T14:26:58.062223" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:58.263695" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:58.666013" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:58.668110" level="INFO">${resp} = None</msg>
<msg time="2026-04-27T14:26:58.668187" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:58.058726" elapsed="0.615037">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:56.712683" elapsed="1.961488">Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:55.807740" elapsed="2.866665">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:58.677632" level="INFO">Creating Session using : alias=session, url=http://10.30.171.250:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x77659d771890&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-27T14:26:58.677316" elapsed="0.000673"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:58.678272" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-04-27T14:26:58.691138" 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-04-27T14:26:58.678146" elapsed="0.013194"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:58.692022" 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-04-27T14:26:58.823334" 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-04-27T14:26:58.691743" elapsed="0.131792"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:58.824273" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-04-27T14:26:58.873793" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:26:58.873961" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDSXpCZ3vl5yArt+R+Bz/pyfrJWLYlamOOdHLHo8mMI8gaOx3GTEkWZ4W6XJvlHox6U+49fitExKz2VPMWNUOiPQg/AdTzEeo/sTZb1d3A7AKZg7HZWhQ6IvoJpJ4mYMDxStrm4MNTYn394fs4AG6IqAFKr9GAbij2lHbFXHmZn...</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-04-27T14:26:58.823960" elapsed="0.050042"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-04-27T14:26:58.882756" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDSXpCZ3vl5yArt+R+Bz/pyfrJWLYlamOOdHLHo8mMI8gaOx3GTEkWZ4W6XJvlHox6U+49fitExKz2VPMWNUOiPQg/AdTzEeo/sTZb1d3A7AKZg7HZWhQ6IvoJpJ4mYMDxStrm4MNTYn394fs4AG6IqAFKr9GAbij2lHbFXHmZn...</msg>
<arg>${NETOPEER_PUB_KEY}</arg>
<arg>${public_key}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-04-27T14:26:58.874303" elapsed="0.008586"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-04-27T14:26:58.676967" elapsed="0.206094"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-27T14:26:58.918141" 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-04-27T14:26:58.883862" elapsed="0.034566"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-27T14:26:58.926120" 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-04-27T14:26:58.918912" elapsed="0.007293"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-04-27T14:26:58.883567" elapsed="0.042764"/>
</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-04-27T14:26:58.932355" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-27T14:26:58.927327" elapsed="0.005108"/>
</branch>
<branch type="ELSE">
<kw name="Get create device request template" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-27T14:26:58.933297" 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-04-27T14:26:58.933496" 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-04-27T14:26:58.933059" elapsed="0.000475"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-04-27T14:26:58.934421" level="INFO">${template} = {
    "device": {
        "unique-id": "{device_name}",
        "ssh-client-params": {
          "credentials": {
              "username": "{username}",
              "passwords": [ "{password}" ]
  ...</msg>
<arg>${template}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-04-27T14:26:58.933903" elapsed="0.000582"/>
</kw>
<status status="PASS" start="2026-04-27T14:26:58.932685" elapsed="0.001878"/>
</kw>
<status status="PASS" start="2026-04-27T14:26:58.932476" elapsed="0.002126"/>
</branch>
<status status="PASS" start="2026-04-27T14:26:58.927285" elapsed="0.007349"/>
</if>
<kw name="Replace String" owner="String">
<msg time="2026-04-27T14:26:58.935218" 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-04-27T14:26:58.934840" elapsed="0.000436"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-27T14:26:58.935800" 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-04-27T14:26:58.935477" elapsed="0.000361"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-27T14:26:58.936446" 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-04-27T14:26:58.936103" elapsed="0.000381"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-27T14:26:58.937004" 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-04-27T14:26:58.936687" elapsed="0.000354"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-27T14:26:58.940688" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:59.142038" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:59.544785" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:59.547411" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:58.937227" elapsed="0.614964">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-27T14:26:59.552660" elapsed="0.000061"/>
</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-04-27T14:26:58.926724" elapsed="0.626258">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:59.553564" elapsed="0.000047"/>
</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-04-27T14:26:59.553916" elapsed="0.000038"/>
</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-04-27T14:26:59.554282" elapsed="0.000039"/>
</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-04-27T14:26:59.554601" elapsed="0.000057"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:59.556651" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-04-27T14:26:59.822366" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-27T14:26:59.822728" level="INFO">${stdout} = </msg>
<msg time="2026-04-27T14:26:59.822829" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-04-27T14:26:59.822922" 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-04-27T14:26:59.555860" elapsed="0.267116"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T14:26:59.824170" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T14:26:59.823498" elapsed="0.000801"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:26:59.825006" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-04-27T14:27:00.123402" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-27T14:27:00.123827" level="INFO">${stdout} = </msg>
<msg time="2026-04-27T14:27:00.123960" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-04-27T14:27:00.124083" 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-04-27T14:26:59.824623" elapsed="0.299530"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:00.125181" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-04-27T14:27:00.188811" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:27:00.189315" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-04-27T14:27:00.189423" level="INFO">${stderr} = </msg>
<msg time="2026-04-27T14:27:00.189518" 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-04-27T14:27:00.124709" elapsed="0.064864"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:00.190269" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-04-27T14:27:00.242284" 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-04-27T14:27:00.189983" elapsed="0.052498"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-27T14:27:00.247487" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:00.449201" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:00.851542" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:00.854000" level="INFO">${resp} = None</msg>
<msg time="2026-04-27T14:27:00.854092" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:00.242863" elapsed="0.614485">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-27T14:27:00.860744" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:27:01.062383" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:27:01.464684" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:27:01.467007" level="INFO">${resp} = None</msg>
<msg time="2026-04-27T14:27:01.467117" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:00.857651" elapsed="0.614028">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:59.555210" elapsed="1.916719">Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:58.675157" elapsed="2.796876">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:01.474676" level="INFO">Creating Session using : alias=session, url=http://10.30.171.250:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x77659d6dacd0&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-27T14:27:01.473871" elapsed="0.001024"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:01.475343" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-04-27T14:27:01.488787" 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-04-27T14:27:01.475164" elapsed="0.013780"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:01.489706" 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-04-27T14:27:01.781774" 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-04-27T14:27:01.489424" elapsed="0.292582"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:01.782795" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-04-27T14:27:01.830287" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:27:01.830622" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDAGEPoVWJoJu5Bm4V+ALHb9AsC+NhhHw6grLntyiIA8Va14arkd4lFuk2eY3pibJ+p0QzonzGv7PFKxf1IRrSAsD5X805rVH0Po3aNXhU+7W/fbHzHCpnDCoOcHfwYZ9vmO7+LPgjTmVf0anFdrduwBQ84z54nXtRUIow7M6lC...</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-04-27T14:27:01.782481" elapsed="0.048206"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-04-27T14:27:01.839679" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDAGEPoVWJoJu5Bm4V+ALHb9AsC+NhhHw6grLntyiIA8Va14arkd4lFuk2eY3pibJ+p0QzonzGv7PFKxf1IRrSAsD5X805rVH0Po3aNXhU+7W/fbHzHCpnDCoOcHfwYZ9vmO7+LPgjTmVf0anFdrduwBQ84z54nXtRUIow7M6lC...</msg>
<arg>${NETOPEER_PUB_KEY}</arg>
<arg>${public_key}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-04-27T14:27:01.831145" elapsed="0.008610"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-04-27T14:27:01.473450" elapsed="0.366404"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-27T14:27:01.879196" 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-04-27T14:27:01.840591" elapsed="0.038748"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-27T14:27:01.888625" 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-04-27T14:27:01.879612" elapsed="0.009109"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-04-27T14:27:01.840142" elapsed="0.048686"/>
</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-04-27T14:27:01.895409" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-27T14:27:01.889885" elapsed="0.005625"/>
</branch>
<branch type="ELSE">
<kw name="Get create device request template" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-27T14:27:01.896524" 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-04-27T14:27:01.896779" 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-04-27T14:27:01.896231" elapsed="0.000590"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-04-27T14:27:01.897679" level="INFO">${template} = {
    "device": {
        "unique-id": "{device_name}",
        "ssh-client-params": {
          "credentials": {
              "username": "{username}",
              "passwords": [ "{password}" ]
  ...</msg>
<arg>${template}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-04-27T14:27:01.897076" elapsed="0.000672"/>
</kw>
<status status="PASS" start="2026-04-27T14:27:01.895785" elapsed="0.002050"/>
</kw>
<status status="PASS" start="2026-04-27T14:27:01.895557" elapsed="0.002315"/>
</branch>
<status status="PASS" start="2026-04-27T14:27:01.889846" elapsed="0.008063"/>
</if>
<kw name="Replace String" owner="String">
<msg time="2026-04-27T14:27:01.898540" 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-04-27T14:27:01.898119" elapsed="0.000465"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-27T14:27:01.899151" 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-04-27T14:27:01.898804" elapsed="0.000388"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-27T14:27:01.899806" 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-04-27T14:27:01.899448" elapsed="0.000400"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-27T14:27:01.900552" 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-04-27T14:27:01.900143" elapsed="0.000452"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-27T14:27:01.904477" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:02.106198" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:02.509220" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:02.511811" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:01.900807" elapsed="0.616880">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-27T14:27:02.518067" elapsed="0.000044"/>
</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-04-27T14:27:01.889232" elapsed="0.629064">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:02.518599" elapsed="0.000035"/>
</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-04-27T14:27:02.518883" elapsed="0.000031"/>
</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-04-27T14:27:02.519131" elapsed="0.000030"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:02.521024" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-04-27T14:27:02.797768" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-27T14:27:02.798043" level="INFO">${stdout} = </msg>
<msg time="2026-04-27T14:27:02.798113" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-04-27T14:27:02.798191" 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-04-27T14:27:02.520673" elapsed="0.277599"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T14:27:02.799089" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T14:27:02.798599" elapsed="0.000564"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:02.799690" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-04-27T14:27:03.188812" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-27T14:27:03.189098" level="INFO">${stdout} = </msg>
<msg time="2026-04-27T14:27:03.189162" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-04-27T14:27:03.189221" 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-04-27T14:27:02.799420" elapsed="0.389869"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:03.189947" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-04-27T14:27:03.262777" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:27:03.263058" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-04-27T14:27:03.263125" level="INFO">${stderr} = </msg>
<msg time="2026-04-27T14:27:03.263186" 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-04-27T14:27:03.189607" elapsed="0.073614"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:03.263782" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-04-27T14:27:03.310503" 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-04-27T14:27:03.263589" elapsed="0.047111"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-27T14:27:03.316662" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:03.518887" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:03.921322" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:03.923976" level="INFO">${resp} = None</msg>
<msg time="2026-04-27T14:27:03.924123" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:03.311230" elapsed="0.617979">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-27T14:27:03.933395" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:27:04.135411" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:27:04.538008" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:27:04.540545" level="INFO">${resp} = None</msg>
<msg time="2026-04-27T14:27:04.540664" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:03.929604" elapsed="0.617133">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:02.519884" elapsed="2.027067">Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:01.472436" elapsed="3.074601">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:04.548863" level="INFO">Creating Session using : alias=session, url=http://10.30.171.250:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x77659c618c10&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-27T14:27:04.548560" elapsed="0.000641"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:04.549532" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-04-27T14:27:04.564152" 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-04-27T14:27:04.549391" elapsed="0.014956"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:04.564824" 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-04-27T14:27:04.928471" 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-04-27T14:27:04.564630" elapsed="0.364059"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:04.929602" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-04-27T14:27:04.982740" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:27:04.983076" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQChh10P68OBvTmgcy22CPNPm2oE4Cjee4SyXkrmFYRWKLCZZa+d5i/Bc8q7rFcJHl+1fSesVcT64UnsycrTwWWURsbeOprZVXU21Tiq95pHIdeB8VoTYyHueUGgJ2DYUuGRPC4znKsqRLTntNTuGkzZdl/nW+sS5bkRbdhU93/j...</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-04-27T14:27:04.929301" elapsed="0.053838"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-04-27T14:27:04.993084" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQChh10P68OBvTmgcy22CPNPm2oE4Cjee4SyXkrmFYRWKLCZZa+d5i/Bc8q7rFcJHl+1fSesVcT64UnsycrTwWWURsbeOprZVXU21Tiq95pHIdeB8VoTYyHueUGgJ2DYUuGRPC4znKsqRLTntNTuGkzZdl/nW+sS5bkRbdhU93/j...</msg>
<arg>${NETOPEER_PUB_KEY}</arg>
<arg>${public_key}</arg>
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
<status status="PASS" start="2026-04-27T14:27:04.983615" elapsed="0.009678"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-04-27T14:27:04.548255" elapsed="0.445206"/>
</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-04-27T14:27:04.994595" level="INFO">Executing command 'rm -rf ./certs &amp;&amp; mkdir ./certs'.</msg>
<msg time="2026-04-27T14:27:05.034352" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:27:05.034638" 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-04-27T14:27:04.994469" elapsed="0.040225"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-27T14:27:05.082218" 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-04-27T14:27:05.035059" elapsed="0.047333"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:05.082892" level="INFO">Executing command 'openssl genrsa -out ./certs/ca.key 2048'.</msg>
<msg time="2026-04-27T14:27:05.307541" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:27:05.307852" 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-04-27T14:27:05.082690" elapsed="0.225221"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:05.308663" 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-04-27T14:27:05.368685" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:27:05.368962" 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-04-27T14:27:05.308349" elapsed="0.060656"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:05.369535" level="INFO">Executing command 'openssl genrsa -out ./certs/server.key 2048'.</msg>
<msg time="2026-04-27T14:27:05.697201" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:27:05.697542" 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-04-27T14:27:05.369332" elapsed="0.328269"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:05.698375" 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-04-27T14:27:05.757583" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:27:05.757908" 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-04-27T14:27:05.698049" elapsed="0.059920"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:05.758747" 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-04-27T14:27:05.820510" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:27:05.820884" 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-04-27T14:27:05.758468" elapsed="0.062481"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:05.821698" level="INFO">Executing command 'openssl rsa -in ./certs/server.key -pubout &gt; ./certs/server.pub'.</msg>
<msg time="2026-04-27T14:27:05.884775" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:27:05.885089" 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-04-27T14:27:05.821424" elapsed="0.063700"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:05.885601" level="INFO">Executing command 'openssl genrsa -out ./certs/client.key 2048'.</msg>
<msg time="2026-04-27T14:27:06.497223" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:27:06.497509" 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-04-27T14:27:05.885427" elapsed="0.612123"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:06.498024" 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-04-27T14:27:06.556712" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:27:06.556962" 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-04-27T14:27:06.497828" elapsed="0.059170"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:06.557591" 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-04-27T14:27:06.616173" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:27:06.616462" 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-04-27T14:27:06.557399" elapsed="0.059104"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:06.617065" level="INFO">Executing command 'mv ./certs ./configuration-files/certs'.</msg>
<msg time="2026-04-27T14:27:06.666675" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:27:06.666928" 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-04-27T14:27:06.616806" elapsed="0.050162"/>
</kw>
<doc>Generates certificates for 2-way TLS authentication (ca, server, client)</doc>
<status status="PASS" start="2026-04-27T14:27:04.994179" elapsed="1.672916"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-27T14:27:06.711753" 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-04-27T14:27:06.667380" elapsed="0.044517"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-27T14:27:06.718339" 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-04-27T14:27:06.712182" elapsed="0.006264"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-27T14:27:06.724886" 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-04-27T14:27:06.718684" elapsed="0.006333"/>
</kw>
<doc>Upload netopeer2 configuration files needed for TLS transport</doc>
<status status="PASS" start="2026-04-27T14:27:04.993812" elapsed="1.731328"/>
</kw>
<kw name="Register keys and certificates in ODL controller" owner="NetconfCallHome">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:06.726357" level="INFO">Executing command 'cat ./configuration-files/certs/client.key'.</msg>
<msg time="2026-04-27T14:27:06.739412" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:27:06.739655" level="INFO">${pem-client-key} = -----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCrejCKuFrFKRL8
NpzL2bbxPGTYbWHn01lNerRy+Df6XIOg9tQ3HemU8NFYZq6FTx2qMixJbwHR7buq
zkTKhzymfqXtIgHFeYblcd2cC8YG4sKy3tO6PSPu7r...</msg>
<msg time="2026-04-27T14:27:06.739722" 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-04-27T14:27:06.726086" elapsed="0.013672"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-27T14:27:06.740351" 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-04-27T14:27:06.740587" 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-04-27T14:27:06.740038" elapsed="0.000587"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-27T14:27:06.741232" level="INFO">${body} = {
    "input": {
        "key-credential": [
            {
                "key-id": "tls-device-key",
                "private-key": "-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwg...</msg>
<var>${body}</var>
<arg>${template}</arg>
<arg>{pem-client-key}</arg>
<arg>${pem-client-key}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-27T14:27:06.740897" elapsed="0.000397"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-27T14:27:06.744750" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-04-27T14:27:06.946633" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-04-27T14:27:07.349220" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-04-27T14:27:07.351405" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/operations/netconf-keystore:add-keystore-entry (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:06.741481" elapsed="0.614618">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/operations/netconf-keystore:add-keystore-entry (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-27T14:27:07.356534" elapsed="0.000042"/>
</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-04-27T14:27:07.356874" elapsed="0.000038"/>
</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-04-27T14:27:07.357147" elapsed="0.000035"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<var>${template}</var>
<arg>${ADD_PRIVATE_KEY_REQ}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-27T14:27:07.357408" elapsed="0.000035"/>
</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-04-27T14:27:07.357670" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${body}</var>
<arg>${body}</arg>
<arg>{certificate-chain}</arg>
<arg>${certificate-chain}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-27T14:27:07.357909" elapsed="0.000029"/>
</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-04-27T14:27:07.358162" elapsed="0.000033"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-27T14:27:07.358428" elapsed="0.000029"/>
</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-04-27T14:27:07.358697" elapsed="0.000034"/>
</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-04-27T14:27:07.358954" elapsed="0.000033"/>
</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-04-27T14:27:07.359175" elapsed="0.000029"/>
</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-04-27T14:27:07.359427" elapsed="0.000029"/>
</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-04-27T14:27:07.359654" elapsed="0.000029"/>
</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-04-27T14:27:07.359867" elapsed="0.000028"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-27T14:27:07.360100" elapsed="0.000029"/>
</kw>
<doc>Register pre-configured netopeer2 certificates and key in ODL-netconf keystore</doc>
<status status="FAIL" start="2026-04-27T14:27:06.725629" elapsed="0.634681">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/operations/netconf-keystore:add-keystore-entry (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:07.360586" elapsed="0.000038"/>
</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-04-27T14:27:07.360822" elapsed="0.000030"/>
</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-04-27T14:27:07.361093" elapsed="0.000030"/>
</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-04-27T14:27:07.361358" elapsed="0.000031"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:07.362902" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-04-27T14:27:07.640690" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-27T14:27:07.641059" level="INFO">${stdout} = </msg>
<msg time="2026-04-27T14:27:07.641162" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-04-27T14:27:07.641303" 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-04-27T14:27:07.362643" elapsed="0.278718"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T14:27:07.642535" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T14:27:07.641799" elapsed="0.000833"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:07.643395" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-04-27T14:27:07.990421" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-27T14:27:07.990892" level="INFO">${stdout} = </msg>
<msg time="2026-04-27T14:27:07.990996" level="INFO">${stderr} = client version 1.21 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version</msg>
<msg time="2026-04-27T14:27:07.991092" 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-04-27T14:27:07.642971" elapsed="0.348179"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:07.992136" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-04-27T14:27:08.053080" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:27:08.053492" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-04-27T14:27:08.053596" level="INFO">${stderr} = </msg>
<msg time="2026-04-27T14:27:08.053691" 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-04-27T14:27:07.991689" elapsed="0.062053"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T14:27:08.054529" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-04-27T14:27:08.106890" 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-04-27T14:27:08.054168" elapsed="0.052891"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-27T14:27:08.110740" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:08.312088" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:08.714822" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:08.717200" level="INFO">${resp} = None</msg>
<msg time="2026-04-27T14:27:08.717305" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:08.107406" elapsed="0.613456">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-27T14:27:08.724337" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:27:08.926107" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:27:09.328444" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:27:09.330589" level="INFO">${resp} = None</msg>
<msg time="2026-04-27T14:27:09.330657" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:08.721185" elapsed="0.612745">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:07.362063" elapsed="1.972092">Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:04.547453" elapsed="4.786820">ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/operations/netconf-keystore:add-keystore-entry (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.171.250', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:09.336109" level="INFO">Executing command 'pip uninstall docker-compose'.</msg>
<msg time="2026-04-27T14:27:10.174970" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T14:27:10.175273" level="INFO">${stdout} = </msg>
<msg time="2026-04-27T14:27:10.175341" level="INFO">${stderr} = WARNING: Skipping docker-compose as it is not installed.</msg>
<msg time="2026-04-27T14:27:10.175401" 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-04-27T14:27:09.335843" elapsed="0.839592"/>
</kw>
<doc>Uninstall docker-compose on tools system</doc>
<status status="PASS" start="2026-04-27T14:27:09.335560" elapsed="0.840013"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-27T14:27:10.175956" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-27T14:27:10.175808" elapsed="0.000454"/>
</kw>
<kw name="Close All Connections" owner="SSHLibrary">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-27T14:27:10.176446" elapsed="0.000414"/>
</kw>
<doc>Tearing down the setup.</doc>
<status status="PASS" start="2026-04-27T14:27:09.335214" elapsed="0.841729"/>
</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-04-27T14:26:34.215680" elapsed="35.961312"/>
</suite>
<status status="FAIL" start="2026-04-27T14:26:34.173432" elapsed="36.005517"/>
</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-04-27T14:26:47.401317" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:47.603303" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:48.006058" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:48.725900" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:48.927985" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:49.330488" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:49.340408" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:49.541896" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:49.944042" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:50.215024" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:50.416943" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:50.819144" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:51.578936" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:51.780907" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:52.183365" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:52.194586" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:52.396128" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:52.798095" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:53.236888" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:53.438427" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:53.841003" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:54.576328" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:54.778220" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:55.181413" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:55.194861" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:55.396064" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:55.798818" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:56.100022" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:56.301528" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:56.704033" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:57.446757" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:57.648357" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:58.050802" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:58.062223" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:58.263695" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:58.666013" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:26:58.940688" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:59.142038" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:26:59.544785" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:00.247487" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:00.449201" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:00.851542" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:00.860744" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:27:01.062383" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:27:01.464684" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:27:01.904477" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:02.106198" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:02.509220" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:03.316662" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:03.518887" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:03.921322" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:03.933395" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:27:04.135411" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:27:04.538008" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:27:06.744750" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-04-27T14:27:06.946633" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-04-27T14:27:07.349220" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-04-27T14:27:08.110740" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:08.312088" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:08.714822" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', 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-04-27T14:27:08.724337" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:27:08.926107" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-04-27T14:27:09.328444" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.171.250', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
</errors>
</robot>
