<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-05-17T23:37:09.625181" 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-05-17T23:37:10.130239" 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-05-17T23:37:10.129758" elapsed="0.000521"/>
</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-05-17T23:37:10.132495" level="INFO">Length is 0.</msg>
<msg time="2026-05-17T23:37:10.132587" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-17T23:37:10.132044" elapsed="0.000573"/>
</kw>
<kw name="Run Keyword And Return 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-05-17T23:37:10.132765" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-05-17T23:37:10.134149" level="INFO">Logging into '10.30.170.182:22' as 'jenkins'.</msg>
<msg time="2026-05-17T23:37:10.842187" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

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

 System information as of Sun May 17 23:37:10 UTC 2026

  System load:  0.0                Processes:             102
  Usage of /:   20.6% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.182
  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-40-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-05-17T23:37:10.133679" elapsed="0.708662"/>
</kw>
<msg time="2026-05-17T23:37:10.842451" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-17T23:37:10.133293" elapsed="0.709250"/>
</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-05-17T23:37:10.131581" elapsed="0.711084"/>
</kw>
<msg time="2026-05-17T23:37:10.842721" 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-05-17T23:37:10.131085" elapsed="0.711688"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-05-17T23:37:10.130488" elapsed="0.712371"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-05-17T23:37:10.842922" elapsed="0.000049"/>
</return>
<msg time="2026-05-17T23:37:10.843152" 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-05-17T23:37:10.129267" elapsed="0.713912"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-17T23:37:10.843848" 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-05-17T23:37:10.843387" elapsed="0.000506"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-05-17T23:37:10.846726" 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-05-17T23:37:10.844034" elapsed="0.002752"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-05-17T23:37:11.276216" level="INFO">[?2004l  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 8053k  100 8053k    0     0  20.1M      0 --:--:-- --:--:-- --:--:-- 20.1M
[?2004h[jenkins@releng-00473-40-1-docker-0 ~]&gt;</msg>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-05-17T23:37:10.847910" elapsed="0.428523"/>
</kw>
<msg time="2026-05-17T23:37:11.276602" 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-05-17T23:37:10.847425" elapsed="0.429210"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:11.277159" level="INFO">Executing command 'sudo chmod +x /usr/local/bin/docker-compose'.</msg>
<msg time="2026-05-17T23:37:11.299422" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:11.299728" level="INFO">${stdout} = </msg>
<msg time="2026-05-17T23:37:11.299834" level="INFO">${stderr} = </msg>
<msg time="2026-05-17T23:37:11.299933" 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-05-17T23:37:11.276867" elapsed="0.023118"/>
</kw>
<doc>Install docker-compose on tools system.</doc>
<status status="PASS" start="2026-05-17T23:37:10.125884" elapsed="1.174329"/>
</kw>
<kw name="Pull Netopeer2 Docker Image" owner="NetconfCallHome">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:11.301913" level="INFO">Executing command 'docker pull sysrepo/sysrepo-netopeer2:latest'.</msg>
<msg time="2026-05-17T23:37:19.247154" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:19.247620" level="INFO">${stdout} = latest: Pulling from sysrepo/sysrepo-netopeer2
399fb1102f3f: Pulling fs layer
fee5db0ff82f: Pulling fs layer
69c7818ed7f4: Pulling fs layer
4639459be202: Pulling fs layer
95d253b40401: Pulling fs laye...</msg>
<msg time="2026-05-17T23:37:19.247733" level="INFO">${stderr} = </msg>
<msg time="2026-05-17T23:37:19.247823" 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-05-17T23:37:11.301505" elapsed="7.946401"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:19.248816" level="INFO">Executing command 'docker images'.</msg>
<msg time="2026-05-17T23:37:19.360271" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:19.360640" level="INFO">${stdout} = IMAGE                              ID             DISK USAGE   CONTENT SIZE   EXTRA
sysrepo/sysrepo-netopeer2:latest   36cc1d841c97        914MB          232MB        </msg>
<msg time="2026-05-17T23:37:19.360749" level="INFO">${stderr} = WARNING: This output is designed for human readability. For machine-readable output, please use --format.</msg>
<msg time="2026-05-17T23:37:19.360842" 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-05-17T23:37:19.248341" elapsed="0.112552"/>
</kw>
<doc>Pulls the netopeer image from the docker repository.</doc>
<status status="PASS" start="2026-05-17T23:37:11.300880" elapsed="8.060207"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-05-17T23:37:19.404301" level="INFO">[chan 4] Opened sftp connection (server version 3)</msg>
<msg time="2026-05-17T23:37:19.413281" 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-05-17T23:37:19.361446" elapsed="0.052030"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-05-17T23:37:19.420605" 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-05-17T23:37:19.413840" elapsed="0.006850"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:19.421118" level="INFO">Executing command 'sed -i -e 's/ODL_SYSTEM_IP/10.30.170.184/g' docker-compose.yaml'.</msg>
<msg time="2026-05-17T23:37:19.433338" 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-05-17T23:37:19.420899" elapsed="0.012621"/>
</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-05-17T23:37:19.452343" elapsed="0.000486"/>
</kw>
<msg time="2026-05-17T23:37:19.452883" 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-05-17T23:37:19.451974" elapsed="0.000970"/>
</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-05-17T23:37:19.451634" elapsed="0.001390"/>
</kw>
<msg time="2026-05-17T23:37:19.453069" 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-05-17T23:37:19.444627" elapsed="0.008487"/>
</kw>
<msg time="2026-05-17T23:37:19.453226" 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-05-17T23:37:19.444322" elapsed="0.008930"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:19.453544" level="INFO">Executing command 'sed -i -e 's/NETCONF_CH_SSH/4334/g' docker-compose.yaml'.</msg>
<msg time="2026-05-17T23:37:19.483051" 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-05-17T23:37:19.453388" elapsed="0.029799"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:19.483790" level="INFO">Executing command 'sed -i -e 's/NETCONF_CH_TLS/4335/g' docker-compose.yaml'.</msg>
<msg time="2026-05-17T23:37:19.532114" 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-05-17T23:37:19.483557" elapsed="0.048705"/>
</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-05-17T23:37:19.551947" elapsed="0.000425"/>
</kw>
<msg time="2026-05-17T23:37:19.552440" 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-05-17T23:37:19.551612" elapsed="0.000896"/>
</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-05-17T23:37:19.551281" elapsed="0.001354"/>
</kw>
<msg time="2026-05-17T23:37:19.552681" 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-05-17T23:37:19.544379" elapsed="0.008345"/>
</kw>
<msg time="2026-05-17T23:37:19.552829" 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-05-17T23:37:19.544127" elapsed="0.008726"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-17T23:37:19.553256" 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-05-17T23:37:19.552999" elapsed="0.000283"/>
</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-05-17T23:37:19.567668" elapsed="0.000417"/>
</kw>
<msg time="2026-05-17T23:37:19.568135" 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-05-17T23:37:19.567316" elapsed="0.000870"/>
</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-05-17T23:37:19.567004" elapsed="0.001256"/>
</kw>
<msg time="2026-05-17T23:37:19.568302" 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-05-17T23:37:19.560129" elapsed="0.008215"/>
</kw>
<msg time="2026-05-17T23:37:19.568464" 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-05-17T23:37:19.559886" elapsed="0.008608"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-05-17T23:37:19.569013" 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-05-17T23:37:19.568658" elapsed="0.000381"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-17T23:37:19.569533" 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-05-17T23:37:19.569192" elapsed="0.000383"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-17T23:37:19.572960" 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-05-17T23:37:19.569720" elapsed="0.003288"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-17T23:37:19.576553" 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-05-17T23:37:19.573162" elapsed="0.003439"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-17T23:37:19.579655" 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-05-17T23:37:19.576754" elapsed="0.002947"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-17T23:37:19.583441" 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-05-17T23:37:19.579855" elapsed="0.003635"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-17T23:37:19.586972" 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-05-17T23:37:19.583643" elapsed="0.003375"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-17T23:37:19.590784" 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-05-17T23:37:19.587170" elapsed="0.003660"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-17T23:37:19.594332" 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-05-17T23:37:19.591015" elapsed="0.003363"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:19.594628" level="INFO">Executing command 'ssh-keygen -q -t rsa -b 2048 -N '' -m pem -f ./incorrect_ssh_host_rsa_key'.</msg>
<msg time="2026-05-17T23:37:19.678477" 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-05-17T23:37:19.594531" elapsed="0.084128"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:19.679335" level="INFO">Executing command 'awk '{print $2}' incorrect_ssh_host_rsa_key.pub'.</msg>
<msg time="2026-05-17T23:37:19.735330" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:19.735479" level="INFO">${incorrect_public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQC6/I6x/XWVok8KqanJpkdhpZ9pdBTfLP9fsKiqHSwFObD4Eu44CRcmWlFnpBATX5FSnvGyhKdQ5xUr8Niks2NWfkFZTA80GYefarxdQa9+SFW7kw7BXW2J4YN9132Cx2mPgwEl/wTBrL7u/NQOjpf0qGcb8JD76u6+hR/xRY4T...</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-05-17T23:37:19.679045" elapsed="0.056462"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-17T23:37:19.739624" level="INFO">${INCORRECT_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQC6/I6x/XWVok8KqanJpkdhpZ9pdBTfLP9fsKiqHSwFObD4Eu44CRcmWlFnpBATX5FSnvGyhKdQ5xUr8Niks2NWfkFZTA80GYefarxdQa9+SFW7kw7BXW2J4YN9132Cx2mPgwEl/wTBrL7u/NQOjpf0qGcb8JD76u6+hR/xRY4T...</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-05-17T23:37:19.735712" elapsed="0.003959"/>
</kw>
<doc>Get the suite ready for callhome test cases.</doc>
<status status="PASS" start="2026-05-17T23:37:10.125573" elapsed="9.614168"/>
</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-05-17T23:37:19.741065" level="INFO">Creating Session using : alias=session, url=http://10.30.170.184:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7b8a3ec1ea90&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-05-17T23:37:19.740765" elapsed="0.000499"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:19.741520" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-05-17T23:37:19.787533" 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-05-17T23:37:19.741422" elapsed="0.046250"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:19.788207" 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-05-17T23:37:20.001625" 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-05-17T23:37:19.787988" elapsed="0.213794"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:20.002359" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-05-17T23:37:20.051856" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:20.052158" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDeV9LG713xTmG3qt8hR3qrGAGl5ZPbnZmu7eksgtYZPZfgGaaslQeup7/2x0H9JEp7qZC35aMfzffbEApNTRpds+nMElRQnMZFRBf17aHc7kKmv7fQwyhXlhU0w5924HcGXWACD2HUOw1El1bG3ucMHzOk12np/B9UhhQcGajb...</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-05-17T23:37:20.002121" elapsed="0.050099"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-05-17T23:37:20.061243" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDeV9LG713xTmG3qt8hR3qrGAGl5ZPbnZmu7eksgtYZPZfgGaaslQeup7/2x0H9JEp7qZC35aMfzffbEApNTRpds+nMElRQnMZFRBf17aHc7kKmv7fQwyhXlhU0w5924HcGXWACD2HUOw1El1bG3ucMHzOk12np/B9UhhQcGajb...</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-05-17T23:37:20.052674" elapsed="0.008658"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-05-17T23:37:19.740500" elapsed="0.320961"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-05-17T23:37:20.100040" 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-05-17T23:37:20.062200" elapsed="0.038001"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-05-17T23:37:20.108456" 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-05-17T23:37:20.100612" elapsed="0.007929"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-05-17T23:37:20.061772" elapsed="0.046863"/>
</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-05-17T23:37:20.114481" elapsed="0.000104"/>
</kw>
<status status="NOT RUN" start="2026-05-17T23:37:20.109590" elapsed="0.005038"/>
</branch>
<branch type="ELSE">
<kw name="Get create device request template" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-05-17T23:37:20.115576" 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-05-17T23:37:20.115800" 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-05-17T23:37:20.115320" elapsed="0.000522"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-05-17T23:37:20.116593" 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-05-17T23:37:20.116065" elapsed="0.000595"/>
</kw>
<status status="PASS" start="2026-05-17T23:37:20.114890" elapsed="0.001854"/>
</kw>
<status status="PASS" start="2026-05-17T23:37:20.114671" elapsed="0.002109"/>
</branch>
<status status="PASS" start="2026-05-17T23:37:20.109545" elapsed="0.007270"/>
</if>
<kw name="Replace String" owner="String">
<msg time="2026-05-17T23:37:20.117377" 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-05-17T23:37:20.117010" elapsed="0.000429"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-05-17T23:37:20.118030" 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-05-17T23:37:20.117650" elapsed="0.000420"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-05-17T23:37:20.118634" 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-05-17T23:37:20.118279" elapsed="0.000395"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-05-17T23:37:20.119249" 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-05-17T23:37:20.118880" elapsed="0.000410"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-05-17T23:37:20.124891" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:20.326985" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:20.729156" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:20.731874" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:20.119508" elapsed="0.621437">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:20.741214" elapsed="0.000031"/>
</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-05-17T23:37:20.109025" elapsed="0.632342">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:20.741556" elapsed="0.000021"/>
</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-05-17T23:37:20.741744" elapsed="0.000022"/>
</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-05-17T23:37:20.741913" elapsed="0.000020"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:20.742919" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-05-17T23:37:21.009152" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-05-17T23:37:21.009568" level="INFO">${stdout} = </msg>
<msg time="2026-05-17T23:37:21.009676" 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-05-17T23:37:21.009772" 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-05-17T23:37:20.742700" elapsed="0.267125"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-17T23:37:21.011031" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-17T23:37:21.010271" elapsed="0.000871"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:21.011919" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-05-17T23:37:21.302980" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-05-17T23:37:21.303648" level="INFO">${stdout} = </msg>
<msg time="2026-05-17T23:37:21.303760" 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-05-17T23:37:21.303868" 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-05-17T23:37:21.011531" elapsed="0.292441"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:21.305326" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-05-17T23:37:21.368930" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:21.369214" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-05-17T23:37:21.369314" level="INFO">${stderr} = </msg>
<msg time="2026-05-17T23:37:21.369457" 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-05-17T23:37:21.304678" elapsed="0.064835"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:21.370138" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-05-17T23:37:21.423276" 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-05-17T23:37:21.369897" elapsed="0.053560"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-05-17T23:37:21.429486" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:21.631503" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:22.034733" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:22.038007" level="INFO">${resp} = None</msg>
<msg time="2026-05-17T23:37:22.038131" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:21.423798" elapsed="0.619172">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-05-17T23:37:22.047648" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:22.249184" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:22.652616" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:22.655549" level="INFO">${resp} = None</msg>
<msg time="2026-05-17T23:37:22.655678" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:22.043455" elapsed="0.618224">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:20.742336" elapsed="1.919917">Several failures occurred:

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

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

Also teardown failed:
Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:22.664948" level="INFO">Creating Session using : alias=session, url=http://10.30.170.184:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7b8a3ea56f10&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-05-17T23:37:22.664505" elapsed="0.000688"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:22.665493" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-05-17T23:37:22.678842" 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-05-17T23:37:22.665351" elapsed="0.013679"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:22.679739" 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-05-17T23:37:22.874015" 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-05-17T23:37:22.679435" elapsed="0.194920"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:22.875488" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-05-17T23:37:22.927749" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:22.928057" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDSuR8tRo/dfKd1dDEv+KehQYvHfpmYeB3n17Ke9ysdgCJFLgbUDWtrwqljISYwjtXTYbcC4yVFuohoZay7g+qGgjB/62+bFRus1GA3jv+LcBQE8BLD7c1jTMJSx2BPIYr6dxj8JLJWOdU6o6owOh9QckF0B/3GAqnDIsnRxKmC...</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-05-17T23:37:22.875060" elapsed="0.053045"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-05-17T23:37:22.935002" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDSuR8tRo/dfKd1dDEv+KehQYvHfpmYeB3n17Ke9ysdgCJFLgbUDWtrwqljISYwjtXTYbcC4yVFuohoZay7g+qGgjB/62+bFRus1GA3jv+LcBQE8BLD7c1jTMJSx2BPIYr6dxj8JLJWOdU6o6owOh9QckF0B/3GAqnDIsnRxKmC...</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-05-17T23:37:22.928606" elapsed="0.006470"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-05-17T23:37:22.664036" elapsed="0.271159"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-05-17T23:37:22.975832" 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-05-17T23:37:22.936074" elapsed="0.040001"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-05-17T23:37:22.985773" 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-05-17T23:37:22.976558" elapsed="0.009400"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-05-17T23:37:22.935576" elapsed="0.050561"/>
</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-05-17T23:37:22.993086" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-05-17T23:37:22.987703" elapsed="0.005464"/>
</branch>
<branch type="ELSE">
<kw name="Get create device request template" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-05-17T23:37:22.994249" 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-05-17T23:37:22.994521" 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-05-17T23:37:22.993959" elapsed="0.000601"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-05-17T23:37:22.995499" 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-05-17T23:37:22.994864" elapsed="0.000699"/>
</kw>
<status status="PASS" start="2026-05-17T23:37:22.993442" elapsed="0.002311"/>
</kw>
<status status="PASS" start="2026-05-17T23:37:22.993215" elapsed="0.002575"/>
</branch>
<status status="PASS" start="2026-05-17T23:37:22.987638" elapsed="0.008186"/>
</if>
<kw name="Replace String" owner="String">
<msg time="2026-05-17T23:37:22.996424" 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-05-17T23:37:22.996030" elapsed="0.000436"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-05-17T23:37:22.997011" 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-05-17T23:37:22.996681" elapsed="0.000368"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-05-17T23:37:22.997644" 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-05-17T23:37:22.997279" elapsed="0.000405"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-05-17T23:37:22.998271" 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-05-17T23:37:22.997887" elapsed="0.000438"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-05-17T23:37:23.002535" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:23.205129" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:23.607733" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:23.610043" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:22.998552" elapsed="0.616801">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:23.615941" elapsed="0.000062"/>
</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-05-17T23:37:22.986856" elapsed="0.629387">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:23.616648" 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>FAILED_AUTH_FAILURE</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-05-17T23:37:23.616936" elapsed="0.000021"/>
</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-05-17T23:37:23.617103" elapsed="0.000020"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:23.618070" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-05-17T23:37:23.884214" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-05-17T23:37:23.884726" level="INFO">${stdout} = </msg>
<msg time="2026-05-17T23:37:23.884814" 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-05-17T23:37:23.884890" 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-05-17T23:37:23.617865" elapsed="0.267063"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-17T23:37:23.886450" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-17T23:37:23.885498" elapsed="0.001025"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:23.887188" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-05-17T23:37:24.174668" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-05-17T23:37:24.175492" level="INFO">${stdout} = </msg>
<msg time="2026-05-17T23:37:24.175615" 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-05-17T23:37:24.175717" 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-05-17T23:37:23.886804" elapsed="0.288972"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:24.176952" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-05-17T23:37:24.237761" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:24.238302" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-05-17T23:37:24.238450" level="INFO">${stderr} = </msg>
<msg time="2026-05-17T23:37:24.238552" 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-05-17T23:37:24.176343" elapsed="0.062269"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:24.239643" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-05-17T23:37:24.291566" 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-05-17T23:37:24.239220" elapsed="0.052595"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-05-17T23:37:24.296769" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:24.498941" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:24.901610" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:24.904642" level="INFO">${resp} = None</msg>
<msg time="2026-05-17T23:37:24.904798" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:24.292244" elapsed="0.617942">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-05-17T23:37:24.913678" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:25.115285" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:25.517800" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:25.520299" level="INFO">${resp} = None</msg>
<msg time="2026-05-17T23:37:25.520449" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:24.910516" elapsed="0.615123">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:23.617506" elapsed="1.908489">Several failures occurred:

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

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

Also teardown failed:
Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:25.528182" level="INFO">Creating Session using : alias=session, url=http://10.30.170.184:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7b8a3d948290&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-05-17T23:37:25.527902" elapsed="0.000449"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:25.528620" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-05-17T23:37:25.541908" 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-05-17T23:37:25.528516" elapsed="0.013485"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:25.542488" 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-05-17T23:37:25.783842" 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-05-17T23:37:25.542284" elapsed="0.241786"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:25.784823" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-05-17T23:37:25.839890" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:25.840203" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDJJuyG8I5DVeRzZ8SDayIP1HWwzfCx9s1mdB9iCQafW2rmOd1CtV4SJg/BEG8J2wsN2aS12+QT9vBLqXzfSILcG7dmUGyrrPw2nt6NLDSv2P2pcW6KajJYpT7rGv/4askKRAo+u7uT8/FHkKCCtnT0apV3sY4BKmQLVh8LFFc3...</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-05-17T23:37:25.784537" elapsed="0.055743"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-05-17T23:37:25.849173" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQDJJuyG8I5DVeRzZ8SDayIP1HWwzfCx9s1mdB9iCQafW2rmOd1CtV4SJg/BEG8J2wsN2aS12+QT9vBLqXzfSILcG7dmUGyrrPw2nt6NLDSv2P2pcW6KajJYpT7rGv/4askKRAo+u7uT8/FHkKCCtnT0apV3sY4BKmQLVh8LFFc3...</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-05-17T23:37:25.840868" elapsed="0.008376"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-05-17T23:37:25.527603" elapsed="0.321736"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-05-17T23:37:25.886216" 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-05-17T23:37:25.850082" elapsed="0.036235"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-05-17T23:37:25.894093" 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-05-17T23:37:25.886593" elapsed="0.007580"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-05-17T23:37:25.849672" elapsed="0.044587"/>
</kw>
<kw name="Register global credentials for SSH call-home devices" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-05-17T23:37:25.895213" 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-05-17T23:37:25.895440" 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-05-17T23:37:25.894997" elapsed="0.000481"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-05-17T23:37:25.896005" 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-05-17T23:37:25.895675" elapsed="0.000366"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-05-17T23:37:25.896568" 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-05-17T23:37:25.896235" elapsed="0.000369"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-05-17T23:37:25.900387" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:26.101997" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:26.504328" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:26.506642" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:25.896789" elapsed="0.615325">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:26.512618" elapsed="0.000059"/>
</kw>
<arg>root</arg>
<arg>root</arg>
<doc>Set global credentials for SSH call-home devices</doc>
<status status="FAIL" start="2026-05-17T23:37:25.894527" elapsed="0.618383">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:26.513556" elapsed="0.000058"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker-compose up -d</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-05-17T23:37:26.513927" elapsed="0.000046"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>90s</arg>
<arg>2s</arg>
<arg>NetconfCallHome.Check Device Status</arg>
<arg>CONNECTED</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-05-17T23:37:26.514324" elapsed="0.000047"/>
</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-05-17T23:37:26.514726" elapsed="0.000046"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:26.516202" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-05-17T23:37:26.783088" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-05-17T23:37:26.783439" level="INFO">${stdout} = </msg>
<msg time="2026-05-17T23:37:26.783544" 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-05-17T23:37:26.783638" 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-05-17T23:37:26.516008" elapsed="0.267732"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-17T23:37:26.784861" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-17T23:37:26.784160" elapsed="0.000809"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:26.785680" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-05-17T23:37:27.084470" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-05-17T23:37:27.084822" level="INFO">${stdout} = </msg>
<msg time="2026-05-17T23:37:27.084925" 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-05-17T23:37:27.085020" 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-05-17T23:37:26.785274" elapsed="0.299817"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:27.085969" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-05-17T23:37:27.141236" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:27.141538" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-05-17T23:37:27.141641" level="INFO">${stderr} = </msg>
<msg time="2026-05-17T23:37:27.141730" 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-05-17T23:37:27.085543" elapsed="0.056236"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:27.142365" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-05-17T23:37:27.195098" 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-05-17T23:37:27.142127" elapsed="0.053145"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-05-17T23:37:27.202090" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:27.403668" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:27.805936" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:27.808185" level="INFO">${resp} = None</msg>
<msg time="2026-05-17T23:37:27.808297" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:27.195726" elapsed="0.617845">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-05-17T23:37:27.818351" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:28.019788" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:28.422077" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:28.423885" level="INFO">${resp} = None</msg>
<msg time="2026-05-17T23:37:28.423953" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:27.814128" elapsed="0.613061">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:26.515505" elapsed="1.911945">Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:25.526896" elapsed="2.900662">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:28.429583" level="INFO">Creating Session using : alias=session, url=http://10.30.170.184:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7b8a3eb06d90&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-05-17T23:37:28.429156" elapsed="0.000645"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:28.430136" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-05-17T23:37:28.442657" 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-05-17T23:37:28.429997" elapsed="0.012744"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:28.443065" 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-05-17T23:37:28.585868" 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-05-17T23:37:28.442932" elapsed="0.143153"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:28.586830" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-05-17T23:37:28.630979" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:28.631238" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCy61yCDQ4v0WKunafvbRr/g5pXh9VywII0gtJ8LQrprTsKYVn3mGqnB/kZyU/zTGYfSfsjXq2Ps+4qNSMiiwROaqMt9v6g+MqVmSPi2ha/UFjgNMhpSWYnO+Kk5uUo01yZO9/TmrMstPz9INzvKNhiWsUpnj14YRgnT3GRkFWU...</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-05-17T23:37:28.586544" elapsed="0.044754"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-05-17T23:37:28.640591" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCy61yCDQ4v0WKunafvbRr/g5pXh9VywII0gtJ8LQrprTsKYVn3mGqnB/kZyU/zTGYfSfsjXq2Ps+4qNSMiiwROaqMt9v6g+MqVmSPi2ha/UFjgNMhpSWYnO+Kk5uUo01yZO9/TmrMstPz9INzvKNhiWsUpnj14YRgnT3GRkFWU...</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-05-17T23:37:28.631757" elapsed="0.008944"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-05-17T23:37:28.428766" elapsed="0.212079"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-05-17T23:37:28.673335" 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-05-17T23:37:28.641986" elapsed="0.031522"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-05-17T23:37:28.679611" 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-05-17T23:37:28.673940" elapsed="0.005813"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-05-17T23:37:28.641237" elapsed="0.038667"/>
</kw>
<kw name="Register global credentials for SSH call-home devices" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-05-17T23:37:28.681475" 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-05-17T23:37:28.681821" 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-05-17T23:37:28.681091" elapsed="0.000791"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-05-17T23:37:28.682771" 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-05-17T23:37:28.682201" elapsed="0.000628"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-05-17T23:37:28.683676" 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-05-17T23:37:28.683142" elapsed="0.000591"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-05-17T23:37:28.687814" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:28.889350" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:29.291571" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:29.293693" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:28.684026" elapsed="0.613355">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:29.297771" elapsed="0.000043"/>
</kw>
<arg>root</arg>
<arg>incorrect</arg>
<doc>Set global credentials for SSH call-home devices</doc>
<status status="FAIL" start="2026-05-17T23:37:28.680322" elapsed="0.617656">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:29.298473" elapsed="0.000039"/>
</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-05-17T23:37:29.298713" elapsed="0.000031"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>90s</arg>
<arg>2s</arg>
<arg>NetconfCallHome.Check Device Status</arg>
<arg>FAILED_AUTH_FAILURE</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-05-17T23:37:29.298978" elapsed="0.000032"/>
</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-05-17T23:37:29.299216" elapsed="0.000030"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:29.300467" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-05-17T23:37:29.555908" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-05-17T23:37:29.556364" level="INFO">${stdout} = </msg>
<msg time="2026-05-17T23:37:29.556539" 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-05-17T23:37:29.556644" 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-05-17T23:37:29.300173" elapsed="0.256527"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-17T23:37:29.558061" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-17T23:37:29.557301" elapsed="0.000865"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:29.559002" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-05-17T23:37:29.850296" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-05-17T23:37:29.850747" level="INFO">${stdout} = </msg>
<msg time="2026-05-17T23:37:29.850897" 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-05-17T23:37:29.851004" 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-05-17T23:37:29.558575" elapsed="0.292486"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:29.852067" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-05-17T23:37:29.913045" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:29.913358" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-05-17T23:37:29.913503" level="INFO">${stderr} = </msg>
<msg time="2026-05-17T23:37:29.913605" 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-05-17T23:37:29.851582" elapsed="0.062081"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:29.914319" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-05-17T23:37:29.963785" 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-05-17T23:37:29.914060" elapsed="0.050076"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-05-17T23:37:29.969759" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:30.172704" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:30.575170" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:30.577516" level="INFO">${resp} = None</msg>
<msg time="2026-05-17T23:37:30.577643" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:29.964775" elapsed="0.618152">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-05-17T23:37:30.587419" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:30.789047" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:31.191625" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:31.193927" level="INFO">${resp} = None</msg>
<msg time="2026-05-17T23:37:31.194037" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:30.583375" elapsed="0.615824">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:29.299708" elapsed="1.899908">Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:28.427908" elapsed="2.771868">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/global/credentials (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:31.203052" level="INFO">Creating Session using : alias=session, url=http://10.30.170.184:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7b8a3ec24090&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-05-17T23:37:31.202419" elapsed="0.001092"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:31.204031" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-05-17T23:37:31.216539" 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-05-17T23:37:31.203841" elapsed="0.012830"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:31.217202" 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-05-17T23:37:31.362002" 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-05-17T23:37:31.216982" elapsed="0.145235"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:31.363007" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-05-17T23:37:31.407162" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:31.407462" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCZbjRzrQzo0GgHj8Qde0NzP1UViKRDvWRe790NnGvZgi1R8zXMZ9+tNBNV/A3yMn7OsRshCPBf2L4Uktz8GI30l/yKYerxQqf5QROQLRq6Urv/cGyPxlLg1ODaW/Q36x5dLLC81xUxdTVLRT2xBtcwA+US4eDCE6nYJbIqb1Es...</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-05-17T23:37:31.362724" elapsed="0.044818"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-05-17T23:37:31.417117" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCZbjRzrQzo0GgHj8Qde0NzP1UViKRDvWRe790NnGvZgi1R8zXMZ9+tNBNV/A3yMn7OsRshCPBf2L4Uktz8GI30l/yKYerxQqf5QROQLRq6Urv/cGyPxlLg1ODaW/Q36x5dLLC81xUxdTVLRT2xBtcwA+US4eDCE6nYJbIqb1Es...</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-05-17T23:37:31.408183" elapsed="0.009061"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-05-17T23:37:31.201797" elapsed="0.215625"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-05-17T23:37:31.453654" 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-05-17T23:37:31.418603" elapsed="0.035143"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-05-17T23:37:31.459191" 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-05-17T23:37:31.453994" elapsed="0.005277"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-05-17T23:37:31.417914" elapsed="0.041443"/>
</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-05-17T23:37:31.464934" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-05-17T23:37:31.460259" elapsed="0.004750"/>
</branch>
<branch type="ELSE">
<kw name="Get create device request template" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-05-17T23:37:31.465874" 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-05-17T23:37:31.466070" 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-05-17T23:37:31.465656" elapsed="0.000451"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-05-17T23:37:31.466833" 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-05-17T23:37:31.466336" elapsed="0.000556"/>
</kw>
<status status="PASS" start="2026-05-17T23:37:31.465247" elapsed="0.001721"/>
</kw>
<status status="PASS" start="2026-05-17T23:37:31.465053" elapsed="0.001948"/>
</branch>
<status status="PASS" start="2026-05-17T23:37:31.460216" elapsed="0.006816"/>
</if>
<kw name="Replace String" owner="String">
<msg time="2026-05-17T23:37:31.467600" 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-05-17T23:37:31.467220" elapsed="0.000418"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-05-17T23:37:31.468151" 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-05-17T23:37:31.467836" elapsed="0.000352"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-05-17T23:37:31.468797" 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-05-17T23:37:31.468477" elapsed="0.000357"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-05-17T23:37:31.469351" 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-05-17T23:37:31.469028" elapsed="0.000359"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-05-17T23:37:31.472720" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:31.674375" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:32.079609" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:32.081802" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:31.469599" elapsed="0.618473">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:32.088643" elapsed="0.000116"/>
</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-05-17T23:37:31.459743" elapsed="0.629271">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:32.089481" 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-05-17T23:37:32.089719" elapsed="0.000028"/>
</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-05-17T23:37:32.089972" elapsed="0.000028"/>
</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-05-17T23:37:32.090205" elapsed="0.000028"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:32.091474" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-05-17T23:37:32.345532" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-05-17T23:37:32.345805" level="INFO">${stdout} = </msg>
<msg time="2026-05-17T23:37:32.345906" 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-05-17T23:37:32.345999" 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-05-17T23:37:32.091182" elapsed="0.254870"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-17T23:37:32.347132" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-17T23:37:32.346415" elapsed="0.000814"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:32.347929" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-05-17T23:37:32.672856" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-05-17T23:37:32.673216" level="INFO">${stdout} = </msg>
<msg time="2026-05-17T23:37:32.673316" 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-05-17T23:37:32.673440" 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-05-17T23:37:32.347568" elapsed="0.325929"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:32.674348" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-05-17T23:37:32.738028" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:32.738456" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-05-17T23:37:32.738565" level="INFO">${stderr} = </msg>
<msg time="2026-05-17T23:37:32.738658" 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-05-17T23:37:32.673919" elapsed="0.064790"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:32.739279" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-05-17T23:37:32.791172" 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-05-17T23:37:32.739057" elapsed="0.052257"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-05-17T23:37:32.796167" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:32.998026" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:33.400211" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:33.402213" level="INFO">${resp} = None</msg>
<msg time="2026-05-17T23:37:33.402320" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:32.791686" elapsed="0.615451">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-05-17T23:37:33.410691" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:33.612632" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:34.015500" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:34.017734" level="INFO">${resp} = None</msg>
<msg time="2026-05-17T23:37:34.017837" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:33.407466" elapsed="0.615657">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:32.090689" elapsed="1.932827">Several failures occurred:

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

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

Also teardown failed:
Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:34.026637" level="INFO">Creating Session using : alias=session, url=http://10.30.170.184:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7b8a3d966f50&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-05-17T23:37:34.026333" elapsed="0.000658"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:34.027291" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-05-17T23:37:34.039925" 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-05-17T23:37:34.027186" elapsed="0.012867"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:34.040624" 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-05-17T23:37:34.278529" 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-05-17T23:37:34.040363" elapsed="0.238310"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:34.279234" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-05-17T23:37:34.323373" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:34.323615" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCy9DMF7vKjKNdsMyGpGiAvzmEhVfWs17CfYdNw67BhG6jHvsH+g0Pwk56QGydVc2kzMzTtORNO6ZuZ21TYvd4dywm6FlJx65cEFhsKGu8dfEM9KgHq6zV5yZrCGVAK7qvF0J+rTZe6DIzFWis/TvwinDaRFkfQVugKzf2/I+3x...</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-05-17T23:37:34.279001" elapsed="0.044666"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-05-17T23:37:34.327911" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQCy9DMF7vKjKNdsMyGpGiAvzmEhVfWs17CfYdNw67BhG6jHvsH+g0Pwk56QGydVc2kzMzTtORNO6ZuZ21TYvd4dywm6FlJx65cEFhsKGu8dfEM9KgHq6zV5yZrCGVAK7qvF0J+rTZe6DIzFWis/TvwinDaRFkfQVugKzf2/I+3x...</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-05-17T23:37:34.323990" elapsed="0.003969"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-05-17T23:37:34.025782" elapsed="0.302244"/>
</kw>
<kw name="Apply SSH-based Call-Home configuration" owner="NetconfCallHome">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-05-17T23:37:34.370943" 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-05-17T23:37:34.328515" elapsed="0.042515"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-05-17T23:37:34.377699" 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-05-17T23:37:34.371228" elapsed="0.006555"/>
</kw>
<doc>Upload netopeer2 configuration files needed for SSH transport</doc>
<status status="PASS" start="2026-05-17T23:37:34.328213" elapsed="0.049659"/>
</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-05-17T23:37:34.383443" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-05-17T23:37:34.378748" elapsed="0.004771"/>
</branch>
<branch type="ELSE">
<kw name="Get create device request template" owner="NetconfCallHome">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-05-17T23:37:34.384331" 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-05-17T23:37:34.384549" 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-05-17T23:37:34.384123" elapsed="0.000470"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-05-17T23:37:34.385381" 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-05-17T23:37:34.384800" elapsed="0.000672"/>
</kw>
<status status="PASS" start="2026-05-17T23:37:34.383759" elapsed="0.001792"/>
</kw>
<status status="PASS" start="2026-05-17T23:37:34.383558" elapsed="0.002027"/>
</branch>
<status status="PASS" start="2026-05-17T23:37:34.378714" elapsed="0.006904"/>
</if>
<kw name="Replace String" owner="String">
<msg time="2026-05-17T23:37:34.386174" 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-05-17T23:37:34.385811" elapsed="0.000409"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-05-17T23:37:34.386629" 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-05-17T23:37:34.386387" elapsed="0.000269"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-05-17T23:37:34.387016" 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-05-17T23:37:34.386793" elapsed="0.000250"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-05-17T23:37:34.387477" 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-05-17T23:37:34.387231" elapsed="0.000273"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-05-17T23:37:34.390375" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:34.591874" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:34.994359" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:34.996779" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:34.387637" elapsed="0.614587">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:35.002752" elapsed="0.000060"/>
</kw>
<arg>netopeer2</arg>
<arg>${INCORRECT_PUB_KEY}</arg>
<arg>root</arg>
<arg>root</arg>
<doc>Registration call-home device with SSH transport using latest models</doc>
<status status="FAIL" start="2026-05-17T23:37:34.378218" elapsed="0.624820">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:35.003402" elapsed="0.000075"/>
</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-05-17T23:37:35.003836" elapsed="0.000047"/>
</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-05-17T23:37:35.004209" elapsed="0.000045"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:35.006113" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-05-17T23:37:35.277443" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-05-17T23:37:35.277746" level="INFO">${stdout} = </msg>
<msg time="2026-05-17T23:37:35.277848" 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-05-17T23:37:35.277941" 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-05-17T23:37:35.005716" elapsed="0.272276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-17T23:37:35.279114" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-17T23:37:35.278398" elapsed="0.000813"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:35.279912" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-05-17T23:37:35.586004" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-05-17T23:37:35.586264" level="INFO">${stdout} = </msg>
<msg time="2026-05-17T23:37:35.586310" 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-05-17T23:37:35.586353" 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-05-17T23:37:35.279546" elapsed="0.306830"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:35.586875" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-05-17T23:37:35.661066" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:35.661662" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-05-17T23:37:35.661768" level="INFO">${stderr} = </msg>
<msg time="2026-05-17T23:37:35.661858" 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-05-17T23:37:35.586642" elapsed="0.075270"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:35.662937" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-05-17T23:37:35.707484" 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-05-17T23:37:35.662569" elapsed="0.045046"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-05-17T23:37:35.714033" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:35.916002" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:36.318628" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:36.320987" level="INFO">${resp} = None</msg>
<msg time="2026-05-17T23:37:36.321105" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:35.708714" elapsed="0.617816">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-05-17T23:37:36.330668" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:36.532806" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:36.936019" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:36.938740" level="INFO">${resp} = None</msg>
<msg time="2026-05-17T23:37:36.938897" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:36.326987" elapsed="0.616800">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:35.004968" elapsed="1.939080">Several failures occurred:

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

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

Also teardown failed:
Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:36.946769" level="INFO">Creating Session using : alias=session, url=http://10.30.170.184:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7b8a3d99d690&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-05-17T23:37:36.946269" elapsed="0.000742"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:36.947351" level="INFO">Executing command 'rm -rf ./configuration-files &amp;&amp; mkdir configuration-files'.</msg>
<msg time="2026-05-17T23:37:36.960829" 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-05-17T23:37:36.947210" elapsed="0.013920"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:36.962131" 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-05-17T23:37:37.229734" 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-05-17T23:37:36.961766" elapsed="0.268270"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:37.231290" level="INFO">Executing command 'cat configuration-files/ssh_host_rsa_key.pub | awk '{print $2}''.</msg>
<msg time="2026-05-17T23:37:37.275702" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:37.276020" level="INFO">${public_key} = AAAAB3NzaC1yc2EAAAADAQABAAABAQC2fp4tbBK/2vrf2I6fx5Qv+uY/yZFxlYm3ld6mPbDuW1QgsdufiVDLcrevGneFGoCo0M0izcHM4BI2dIYC8/HlBP/zLxDO7Q1+NjeAPvQJvJFnaGnf6yAzV/Lyq/YGwlChiV9dMcWk9kOk4wRuWtlJv7GZgS+57nCufKXdOsEA...</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-05-17T23:37:37.230833" elapsed="0.045248"/>
</kw>
<kw name="Set Test Variable" owner="BuiltIn">
<msg time="2026-05-17T23:37:37.284445" level="INFO">${NETOPEER_PUB_KEY} = AAAAB3NzaC1yc2EAAAADAQABAAABAQC2fp4tbBK/2vrf2I6fx5Qv+uY/yZFxlYm3ld6mPbDuW1QgsdufiVDLcrevGneFGoCo0M0izcHM4BI2dIYC8/HlBP/zLxDO7Q1+NjeAPvQJvJFnaGnf6yAzV/Lyq/YGwlChiV9dMcWk9kOk4wRuWtlJv7GZgS+57nCufKXdOsEA...</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-05-17T23:37:37.276595" elapsed="0.007923"/>
</kw>
<doc>Opens session towards ODL controller, set configuration folder, generates a new host key for the container</doc>
<status status="PASS" start="2026-05-17T23:37:36.945839" elapsed="0.338790"/>
</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-05-17T23:37:37.286082" level="INFO">Executing command 'rm -rf ./certs &amp;&amp; mkdir ./certs'.</msg>
<msg time="2026-05-17T23:37:37.323975" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:37.324195" 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-05-17T23:37:37.285926" elapsed="0.038325"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-05-17T23:37:37.370091" 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-05-17T23:37:37.324615" elapsed="0.045586"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:37.370697" level="INFO">Executing command 'openssl genrsa -out ./certs/ca.key 2048'.</msg>
<msg time="2026-05-17T23:37:37.579034" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:37.579367" 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-05-17T23:37:37.370519" elapsed="0.208950"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:37.580280" 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-05-17T23:37:37.637474" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:37.637705" 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-05-17T23:37:37.579934" elapsed="0.057828"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:37.638304" level="INFO">Executing command 'openssl genrsa -out ./certs/server.key 2048'.</msg>
<msg time="2026-05-17T23:37:37.964557" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:37.964900" 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-05-17T23:37:37.638080" elapsed="0.326879"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:37.965685" 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-05-17T23:37:38.025839" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:38.025954" 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-05-17T23:37:37.965352" elapsed="0.060627"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:38.026255" 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-05-17T23:37:38.086067" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:38.086282" 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-05-17T23:37:38.026144" elapsed="0.060211"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:38.087002" level="INFO">Executing command 'openssl rsa -in ./certs/server.key -pubout &gt; ./certs/server.pub'.</msg>
<msg time="2026-05-17T23:37:38.145917" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:38.146221" 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-05-17T23:37:38.086778" elapsed="0.059500"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:38.147616" level="INFO">Executing command 'openssl genrsa -out ./certs/client.key 2048'.</msg>
<msg time="2026-05-17T23:37:38.349491" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:38.349856" 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-05-17T23:37:38.147101" elapsed="0.202816"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:38.350706" 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-05-17T23:37:38.409810" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:38.410035" 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-05-17T23:37:38.350347" elapsed="0.059745"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:38.410834" 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-05-17T23:37:38.473749" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:38.473982" 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-05-17T23:37:38.410603" elapsed="0.063435"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:38.474634" level="INFO">Executing command 'mv ./certs ./configuration-files/certs'.</msg>
<msg time="2026-05-17T23:37:38.523493" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:38.523717" 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-05-17T23:37:38.474363" elapsed="0.049410"/>
</kw>
<doc>Generates certificates for 2-way TLS authentication (ca, server, client)</doc>
<status status="PASS" start="2026-05-17T23:37:37.285521" elapsed="1.238397"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-05-17T23:37:38.571240" 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-05-17T23:37:38.524204" elapsed="0.047260"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-05-17T23:37:38.577262" 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-05-17T23:37:38.571882" elapsed="0.005464"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-05-17T23:37:38.582551" 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-05-17T23:37:38.577584" elapsed="0.005086"/>
</kw>
<doc>Upload netopeer2 configuration files needed for TLS transport</doc>
<status status="PASS" start="2026-05-17T23:37:37.284961" elapsed="1.297812"/>
</kw>
<kw name="Register keys and certificates in ODL controller" owner="NetconfCallHome">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:38.583835" level="INFO">Executing command 'cat ./configuration-files/certs/client.key'.</msg>
<msg time="2026-05-17T23:37:38.595872" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:38.596121" level="INFO">${pem-client-key} = -----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQkl58B2q62wHJ
8o1ekDLrRGaJ14PBNBCM0KurCC8tkHGW0V8TBfPqCLqKIrEwfZXxlJ0OnJLvL+bl
DhcMCiL7zoPDM5tRaKisjSUsCaJ9bKnprzoz4IJBtO...</msg>
<msg time="2026-05-17T23:37:38.596246" 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-05-17T23:37:38.583614" elapsed="0.012687"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-05-17T23:37:38.597072" 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-05-17T23:37:38.597385" 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-05-17T23:37:38.596666" elapsed="0.000821"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-05-17T23:37:38.598367" level="INFO">${body} = {
    "input": {
        "key-credential": [
            {
                "key-id": "tls-device-key",
                "private-key": "-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwg...</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-05-17T23:37:38.597824" elapsed="0.000640"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-05-17T23:37:38.602365" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-05-17T23:37:38.804028" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-05-17T23:37:39.206616" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-05-17T23:37:39.208824" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/operations/netconf-keystore:add-keystore-entry (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:38.598765" elapsed="0.615377">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/operations/netconf-keystore:add-keystore-entry (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:39.214591" elapsed="0.000041"/>
</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-05-17T23:37:39.214917" elapsed="0.000035"/>
</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-05-17T23:37:39.215168" elapsed="0.000032"/>
</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-05-17T23:37:39.215387" elapsed="0.000051"/>
</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-05-17T23:37:39.215629" elapsed="0.000028"/>
</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-05-17T23:37:39.215846" elapsed="0.000028"/>
</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-05-17T23:37:39.216048" 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-05-17T23:37:39.216270" elapsed="0.000028"/>
</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-05-17T23:37:39.216536" elapsed="0.000032"/>
</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-05-17T23:37:39.216789" elapsed="0.000032"/>
</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-05-17T23:37:39.216998" elapsed="0.000028"/>
</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-05-17T23:37:39.217206" elapsed="0.000034"/>
</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-05-17T23:37:39.217489" elapsed="0.000031"/>
</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-05-17T23:37:39.217704" 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-05-17T23:37:39.217935" elapsed="0.000028"/>
</kw>
<doc>Register pre-configured netopeer2 certificates and key in ODL-netconf keystore</doc>
<status status="FAIL" start="2026-05-17T23:37:38.583161" elapsed="0.634944">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/operations/netconf-keystore:add-keystore-entry (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:39.218378" elapsed="0.000057"/>
</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-05-17T23:37:39.218630" 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-05-17T23:37:39.218895" elapsed="0.000028"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>30s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${mount_point_url}</arg>
<arg>${netconf_mount_expected_values}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-05-17T23:37:39.219121" elapsed="0.000027"/>
</kw>
<kw name="Test Teardown" owner="NetconfCallHome" type="TEARDOWN">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:39.220537" level="INFO">Executing command 'docker-compose logs'.</msg>
<msg time="2026-05-17T23:37:39.531086" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-05-17T23:37:39.531425" level="INFO">${stdout} = </msg>
<msg time="2026-05-17T23:37:39.531532" 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-05-17T23:37:39.531624" 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-05-17T23:37:39.220244" elapsed="0.311431"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-17T23:37:39.532772" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-17T23:37:39.532070" elapsed="0.000796"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:39.533573" level="INFO">Executing command 'docker-compose down'.</msg>
<msg time="2026-05-17T23:37:39.881471" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-05-17T23:37:39.881934" level="INFO">${stdout} = </msg>
<msg time="2026-05-17T23:37:39.882037" 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-05-17T23:37:39.882130" 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-05-17T23:37:39.533170" elapsed="0.349011"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:39.883043" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-05-17T23:37:39.956939" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:39.957203" level="INFO">${stdout} = CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES</msg>
<msg time="2026-05-17T23:37:39.957306" level="INFO">${stderr} = </msg>
<msg time="2026-05-17T23:37:39.957441" 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-05-17T23:37:39.882625" elapsed="0.074872"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-17T23:37:39.958068" level="INFO">Executing command 'rm -rf ./configuration-files'.</msg>
<msg time="2026-05-17T23:37:40.003872" 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-05-17T23:37:39.957846" elapsed="0.046165"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-05-17T23:37:40.008744" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:40.210157" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:40.612419" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:40.614798" level="INFO">${resp} = None</msg>
<msg time="2026-05-17T23:37:40.614907" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:40.004319" elapsed="0.615703">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/odl-netconf-callhome-server:netconf-callhome-server/allowed-devices (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-05-17T23:37:40.624502" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:40.825580" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:41.227887" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:41.230846" level="INFO">${resp} = None</msg>
<msg time="2026-05-17T23:37:41.230957" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:40.620472" elapsed="0.615569">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:39.219800" elapsed="2.016587">Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:36.944740" elapsed="4.291834">ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/operations/netconf-keystore:add-keystore-entry (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))

Also teardown failed:
Several failures occurred:

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

2) ConnectionError: HTTPConnectionPool(host='10.30.170.184', port=8181): Max retries exceeded with url: /rests/data/netconf-keystore:keystore (Caused by NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:41.239576" level="INFO">Executing command 'pip uninstall docker-compose'.</msg>
<msg time="2026-05-17T23:37:42.009191" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-17T23:37:42.009513" level="INFO">${stdout} = </msg>
<msg time="2026-05-17T23:37:42.009578" level="INFO">${stderr} = WARNING: Skipping docker-compose as it is not installed.</msg>
<msg time="2026-05-17T23:37:42.009636" 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-05-17T23:37:41.239355" elapsed="0.770314"/>
</kw>
<doc>Uninstall docker-compose on tools system</doc>
<status status="PASS" start="2026-05-17T23:37:41.238956" elapsed="0.770856"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-05-17T23:37:42.010224" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-05-17T23:37:42.010066" elapsed="0.000481"/>
</kw>
<kw name="Close All Connections" owner="SSHLibrary">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-05-17T23:37:42.010727" elapsed="0.000420"/>
</kw>
<doc>Tearing down the setup.</doc>
<status status="PASS" start="2026-05-17T23:37:41.238210" elapsed="0.773020"/>
</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-05-17T23:37:09.666675" elapsed="32.344604"/>
</suite>
<status status="FAIL" start="2026-05-17T23:37:09.626729" elapsed="32.386486"/>
</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-05-17T23:37:20.124891" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:20.326985" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:20.729156" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:21.429486" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:21.631503" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:22.034733" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:22.047648" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:22.249184" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:22.652616" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:23.002535" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:23.205129" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:23.607733" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:24.296769" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:24.498941" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:24.901610" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:24.913678" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:25.115285" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:25.517800" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:25.900387" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:26.101997" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:26.504328" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:27.202090" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:27.403668" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:27.805936" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:27.818351" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:28.019788" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:28.422077" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:28.687814" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:28.889350" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:29.291571" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:29.969759" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:30.172704" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:30.575170" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:30.587419" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:30.789047" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:31.191625" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:31.472720" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:31.674375" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:32.079609" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:32.796167" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:32.998026" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:33.400211" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:33.410691" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:33.612632" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:34.015500" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:34.390375" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:34.591874" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:34.994359" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:35.714033" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:35.916002" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:36.318628" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:36.330668" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:36.532806" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:36.936019" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:38.602365" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-05-17T23:37:38.804028" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-05-17T23:37:39.206616" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/operations/netconf-keystore:add-keystore-entry</msg>
<msg time="2026-05-17T23:37:40.008744" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:40.210157" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:40.612419" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', 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-05-17T23:37:40.624502" level="WARN">Retrying (RetryAdapter(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:40.825580" level="WARN">Retrying (RetryAdapter(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
<msg time="2026-05-17T23:37:41.227887" level="WARN">Retrying (RetryAdapter(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("HTTPConnection(host='10.30.170.184', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")': /rests/data/netconf-keystore:keystore</msg>
</errors>
</robot>
